我正在尝试理解这种类型的变量:char**
。
对我来说,char**
是一个指向一个地址的指针,我可以找到一个类型为char*
的指针数组,这些指针指向一个可以找到我的字符串的地址。我是对的吗?
答案 0 :(得分:4)
几乎。 char**
本身并不能确保它指向char*
的数组。它可能会,也可能不会,取决于您的程序的功能。遵循相同的逻辑,char*
经常指向字符串(字符数组),但不一定。
答案 1 :(得分:1)
char ** - 是一个指针,它指向一个指针,CAN指向一个数组,可以指向一个变量,并且可以指向任何内容。
通常,二维指针对动态数组很有用,你可以像这样使用
...
Point** SizeArray = new Point*[RowCount];
SizeArray[RowIndex] = new Point[ColCount];
...
SizeArray[CurrentRowIndex][CurrentColIndex] = Point(x,y);
...
for (UInt32 i = 0; i < RowCount; ++i)
delete SizeArray[i]; // deletes an inner array of Points;
delete SizeArray;
...
答案 2 :(得分:1)
请尝试This可爱的小网站,你再也不会理解指针语法: - )
注意:我不会以任何方式对cdecl.org表示认可。
答案 3 :(得分:0)
不完全是。 char**
可能指向一个地址,您可以在其中找到类型为char*
的指针,而不一定是数组。 char*
指向一个地址,您可以在其中找到char
类型的变量,而不是字符串。
答案 4 :(得分:0)
char**
- &gt;指向指向字符的指针。 char**
是指向char *
的指针,其中char *
可能指向一个字符数组,或者可以指向一个字符,也可能不指向该字符!
当您分配这样的内存时 -
char **ptr;
int i;
ptr=(char **)malloc(2*sizeof(char *));
for(i=0;i<2;i++)
ptr=(char *)malloc(10*sizeof(char));
其中ptr
是一个2 char *
的数组,每个char *
指向10个字符或字符串的数组!