关于指向指针的指针,我想知道它是否可以使用以下内容:
char** _charPp = new char*[10];
for (int i = 0; i < 10; i++)
´ _charPp[i] = new char[100];
那就是 - 如果我想指向指向10个char数组的指针。
问题 - 现在这样可以,还是我必须对每个char数组进行某种初始化?然后 - 我该怎么做?
我稍后会在程序中用某些字符填充这些数组,但我怀疑数组应该先用值初始化,例如&#34; 0&#34;
答案 0 :(得分:2)
是的,它看起来非常合适,
int arraySizeX = 100;
int arraySizeY = 100;
char** array2d = new char*[arraySizeX] // you've just allocated memory that
// holds 100 * 4 (average) bytes
for(int i = 0; i < arraySizeX; ++i)
{
array2d[i] = new char[arraySizeY] // you've just allocated a chunk that
//holds 100 char values. It is 100 * 1 (average) bytes
memset(array2d[i], 0, arraySizeY) // to make every element NULL
}
我稍后会在程序中用某些字符填充这些数组 但我怀疑数组应该先用值初始化 例如&#34; 0&#34;
不,没有&#34;默认值&#34;在C ++中。您需要为指针指定0以使其为空,或使用memset()将其与数组一起使用。
答案 1 :(得分:1)
Netherwire的答案正确显示了如何将字符初始化为0
。我将解决你问题的第一部分。
无需初始化它们。只要你在阅读之前初始化字符,这是正确的。
根据代码的结构以及如何使用数组,无论如何都可能更安全,因为如果最终在初始化之前读取其中的一些内容,则很难找到错误。
另外,请记住稍后delete[]
您已分配的阵列。或者更好的是,请考虑使用std::vector
代替(std::string
,具体取决于您使用这些数组的内容。)