Sof*_*Guy 0 c++ arrays pointers initialization
我真的不确定它是什么(如果它是一个指针数组,或指针数组的数组???),但当我通过调试器踩它时它给了我0xCDCDCDCD,意味着内存被分配,但未初始化.谁能告诉我如何初始化它?
谢谢.
char* (*vars)[4];
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的东西,但它会产生编译错误:
for (int i = 0; i < 4; i++)
vars[i] = new char*[new char*][4]; // error C2440: 'initializing' : cannot convert from 'char **' to 'unsigned int'
Run Code Online (Sandbox Code Playgroud)
首先,您需要使用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;
Run Code Online (Sandbox Code Playgroud)
最后,你永远不应该在C++中编写这样的代码.总是有更好的方法来做你想要做的事情(通常涉及容器和智能指针).