我char*最近明白了很多问题.假设我做了一个递归函数来恢复a char*但是根据我如何初始化它我得到了一些访问冲突,并且在我的C++入门中我没有发现任何给我正确的理解路径所以我正在寻求你的帮助.
案例1 在尝试交换字母时我遇到访问冲突的第一种情况:
char * bob = "hello";
Run Code Online (Sandbox Code Playgroud)
案例2然后我尝试了这个让它工作
char * bob = new char[5];
bob[0] = 'h';
bob[1] = 'e';
bob[2] = 'l';
bob[3] = 'l';
bob[4] = 'o';
Run Code Online (Sandbox Code Playgroud)
情况3但是当我做了一个cout时,我最后得到了一些随机的垃圾,所以我换了它
char * bob = new char[6];
bob[0] = 'h';
bob[1] = 'e';
bob[2] = 'l';
bob[3] = 'l';
bob[4] = 'o';
bob[5] = '\0';
Run Code Online (Sandbox Code Playgroud)
案例4那是有效的,所以我告诉自己为什么这不会起作用
char * bob = new char[6];
bob = "hello\0";
Run Code Online (Sandbox Code Playgroud)
情况5,它失败了,我也读过你可以做某事的地方
char* bob[];
Run Code Online (Sandbox Code Playgroud)
然后添加一些东西.我的问题是为什么有些失败而其他失败,最好的方法是什么?
我从未遇到多线程,但我到处都听说过它.我应该知道什么以及何时使用它?我的代码主要是用c ++编写的.
我为什么要这样做?
typedef struct Frame_s
{
int x;
int y;
int z;
} Frame_t;
Run Code Online (Sandbox Code Playgroud)
此外,如果我想创建一个对象,我使用Frame_s或Frame_t?
我的钳位宏有问题,当我的值超过10且我的高超过17时,它停止工作.任何的想法?
#define CLAMP(value, low, high) (((value)<(low))?(low):(((value)>(high))?(high):(value)))
Run Code Online (Sandbox Code Playgroud) 有时当我调试时,我得到这样的消息.
Program received signal SIG44, Real-time event 44.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
谢谢.
编辑:
平台是linux
如何在c ++中释放这种类型的3D数组?我有一个有一个int***卷作为成员的类,我用这种方式填充它.
volume = new int**[xSize];
for(int i =0; i<xSize; i++)
{
volume[i] = new int*[ySize];
for(int j =0; j<ySize; j++)
{
volume[i][j] = new int[zSize];
for(int k = 0; k<zSize;k++)
{
volume[i][j][k] = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud) 当我写入文件时,我的输出有问题当我将endl更改为行时,我得到了正方形.
std::ofstream outfile (a_szFilename, std::ofstream::binary);
outfile<<"["<<TEST<<"]"<<std::endl;
Run Code Online (Sandbox Code Playgroud)
我在我的文件中得到类似的东西加上其他输出不写在下一行但是在同一个上.
[TEST]square
Run Code Online (Sandbox Code Playgroud)
显然我不能在这里写广场,但它是关于ofstream是二进制还是其他东西?
我发现使用Love2d框架执行我的脚本的唯一方法是将所有内容压缩,然后将zip重命名为love.这种需要花费大量时间进行小修改.有更快的方法吗?我试图命令行,我得到这个错误
'love' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud) 所以我使用sprintf
sprintf(buffer, "%f|%f|%f|%f|%f|%f|%d|%f|%d", x, y, z, u, v, w, nID, dDistance, nConfig);
Run Code Online (Sandbox Code Playgroud)
但是当我打印缓冲区时,我得到的最后两个参数错误,它们假设为35.0000和0,并且在字符串中它们是0.00000和10332430并且我的缓冲区足够长并且所有其他参数在字符串中都很好
任何的想法?是否有sprintf的长度限制?
我检查了所有数字的类型,它们是正确的,但似乎问题是dDistance.当我从sprint中删除它时,nConfig在字符串中获得正确的值,但是当我删除nConfig时,dDistance仍然没有得到正确的值.我查了一下,dDistance是双倍的.任何的想法?
由于人们似乎不相信我,我这样做:
char test[255]={0};
int test1 = 2;
double test2=35.00;
int test3 = 0;
sprintf(test,"%d|%f|%d",test1,test2,test3);
Run Code Online (Sandbox Code Playgroud)
我在我的字符串中得到这个:
2|0.000000|1078034432
Run Code Online (Sandbox Code Playgroud) 这是我的问题,我有几个参数需要增加0.1.但是我的UI只为浮点数渲染xx,x.xx,x.xxx,所以因为0.1f实际上不是0.1,但是从长远来看类似于0.10000000149011612,我的ui将渲染-0.00,这没有多大意义.如何防止所有可能的UI情况.
谢谢.