我真的不确定是什么(如果是指针数组或指针数组数组???),但是当我通过调试器踩到它时,它会给我0xCDCDCDCD,这意味着内存已分配但未初始化。谁能告诉我如何初始化它?

谢谢。

char* (*vars)[4];


我已经尝试过类似的东西,但是会产生编译错误:

for (int i = 0; i < 4; i++)
    vars[i] = new char*[new char*][4]; // error C2440: 'initializing' : cannot convert from 'char **' to 'unsigned int'

最佳答案

首先,您需要使用cdecl


  声明vars为指向char指针数组4的指针


您如何初始化它取决于您的目标。但是,例如:

// Create a new array
vars = new (char *[1][4]);
// Each element of the array in turn points to an array
for (int i = 0; i < 4; i++) {
    (*vars)[i] = new char[27];
}

...

// Cleanup
for (int i = 0; i < 4; i++) {
    delete [] (*vars)[i];
}
delete [] vars;


最后,您永远不要在C ++中编写这样的代码。总有一种更好的方法来执行您要尝试执行的操作(通常涉及容器和智能指针)。

10-04 11:22
查看更多