如何初始化此指针数组
How do I initialize this array of pointers?
我真的不确定它是什么(如果它是指针数组,还是指针数组??),但当我通过调试器踩到它时,它会给我0xCDCDCD,这意味着内存已分配,但未初始化。有人能告诉我如何初始化它吗?
谢谢。
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++中编写这样的代码。总有更好的方法来做你想做的事情(通常涉及容器和智能指针)。
vars
是一个指向char的4个指针数组的指针。
你不能在C++中嵌套索引new
,所以你必须这样做:
vars = new (char*)[4];
for(int i=0; i<4; i++) {
(*vars)[i] = ...;
}
循环的内部,即该数组中指针的初始化,在很大程度上取决于程序的其余部分。
但说真的,如果你开始写这样的东西,不管你在服用什么药物,要么多吃,要么少吃。
double (vars)[4];
只声明了一个4个double的数组。(可选的括号只是令人困惑)。如果您想要一个由4个字符串组成的数组,请使用char *((vars)[4]);
(好吧,我过度使用了括号。)然后您可以将它们初始化为null,或者分配新的字符串,或者将它们指向预先分配的内存。
char *vars[4];
for (int i = 0; i < 4; i++)
vars[i] = new char[I_HOPE_THIS_IS_BIG_ENOUGH];
相关文章:
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- C++,指针数组,指向双链表中的条目
- 在C++中,如何初始化指向wchar_t*的指针数组(生成wchar_t**)
- C++从函数指针数组调用函数
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 将链表转换为指针数组时出错
- C++ 对象指针数组的复制构造函数
- C++ - 循环访问指针数组会导致错误
- 删除指针数组 (C++) 中的元素
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将函数指针数组中的函数指针作为模板参数传递
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 具有推导参数的模板函数指针数组变量
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- 如何在C++中复制指针数组的数据
- 初始化类中的指针数组,并在另一个类中检索它
- 尽管直接设置了指针数组,但仍为空