我很难理解下面的代码:
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]; 有人可以解释一下。谢谢。
答案 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
中。
但是,这只是为指针分配内存;没有任何内存来存储字符串本身,因此为什么以后分配它们。