char **p;相当于 char *(*p) 什么意思怎样理解它的结构?

2026年09月24日 12:13
有2个网友回答
网友(1):

* ,取值运算符,一般用于指针中,结合方向为右结合(关键之处)。 char **p与char *(*p)相同,为一个指向char型数据指针的指针。
char c:c为一个字符
char *p:p指向一个char类型的指针,可以类似看作是一个字符数组
char **p:p指向一个指针,该指针是指向一个char类型的指针,可以类似看作是个指向字符串数组的指针。

网友(2):

char p[]和char *p

用作变量定义:
char p[]="abcdefgh";
char *p="abcdefgh";
可能引起重名问题。都是可以的,含义也一样。
char p[]="abcdefg",char *p1;
前者是一个字符数组,内存中有一定的存放字符的空间;
后者只是一个指针,里面存放了一个地址,这个地址是一个存放字符的地址。

如果它们用作函数的参数,都可以用一个数组的名称或其中某元素的地址做参数。但是前者不能改变这个数组的内容,只能引用;后者可以改变数组的内容。