C - 指针 - 我理解得好吗?

时间:2014-08-14 09:55:22

标签: c pointers

我正在尝试理解这种类型的变量:char**

对我来说,char**是一个指向一个地址的指针,我可以找到一个类型为char*的指针数组,这些指针指向一个可以找到我的字符串的地址。我是对的吗?

5 个答案:

答案 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个字符或字符串的数组!