C ++指向此代码中指针解释的指针

时间:2015-03-10 15:09:15

标签: c++ pointers

我很难理解下面的代码:

char **strarray = new char*[120];

for(int i = 0; i < max; i++)
{
    strarray[i] = new char[120];
    cout << "Enter element: ";
    cin >> strarray[i];
}

这条线是什么意思? char ** strarray = new char * [120]; 有人可以解释一下。谢谢。

3 个答案:

答案 0 :(得分:0)

char **strarray = new char*[120];

为指向char的120个指针的数组分配内存。然后,为每个单独的数组元素(每个指向char)分配120个字符,然后将字符串读入其中。请注意,最后一个120与指向120的初始指针数组的大小char无关,因此您可以在for循环中使用不同的大小

实现您正在做的事情的一个好方法是使用typedef

typedef char* pchar;
pchar* strarray = new pchar[120]; // can see the type here more transparently

答案 1 :(得分:0)

  

这条线是什么意思?

char **strarray = new char*[120];

它从堆中分配一个120 char*个对象数组,让strarray指向分配的内存。

答案 2 :(得分:0)

char **表示指向char的指针。

char* [120]表示指向char的120个指针的数组。

char **strarray = new char*[120];表示为指向char的120个指针分配内存并将其存储在strarray中。

但是,这只是为指针分配内存;没有任何内存来存储字符串本身,因此为什么以后分配它们。