这个不等价于二维数组,只不过用法相似。
int a
int *p = &a //p存储的是一个 “ int型的变量a的地址”
int **q = &p //是q存储的是一个“指向int型的变量a的地址的指针的地址”
你可以类比一下,将int*看成一个整体,也就是(int*)(*p)
和你平时用的声明指针的方式非常相似(int)(*p)
一个是指向int类型的指针,一个是指向int*类型的指针.
*p 说明p是一个指针,指向一个存储空间
*p的值就是它指向的存储空间的存储的值
如int *p,a;//定义p是一个指向整型变量的指针变量..
p=&a;//p的值为a的地址,即p指向a
a=5;//a的值为5,a与*p是等价的,那么a=5,即是*p=5
printf("%d",*p);//输出结果为5
同理
char *p;//定义p为一个指向字符型变量的指针变量...
char c;
p=&c;//p的值为变量c的地址,即p指向c..
*p='a';//与c='a'等价
printf("%c",c);输出结果为a
一句话:
*p的值就是它所指向的元素的值(p的值为它所指向的元素的地址,和*p是不一样的)