之间是什么不同int **p 和int *p2[5]在第一种情况下p是一个指针,指向指针的数组,我将在以后定义!但也P2指向指针的数组!!!!.
int *p2[5]是一样的int p2[5];.因为在这两种情况下p2都是指针!有什么不同?
int **p
Run Code Online (Sandbox Code Playgroud)
这是指向指针的指针int.因此p可以指向单个指针或指针数组.反过来*p可以指向单个int或数组int.究竟是什么背后p没有表达其类型.
int *p2[5]
Run Code Online (Sandbox Code Playgroud)
这是一个长度为5的数组指针int.这里p2是一个长度为5的数组.毫无疑问.但那怎么样p2[i]?它们可以指向单个指针,也可以指向int数组.同样,该类型中不存在该信息.
在你提出的问题中:
p2是一个指针.
这种说法不正确.p2是一个数组,而不是一个指针.在某些情况下,p2可能会衰减到指针,但它本身不是指针.
请注意,如果您从变量开始p2,那么您可以将其指定为p:
p = p2;
Run Code Online (Sandbox Code Playgroud)
这是一个数组,p2衰减到指针.此时你知道p指向一个指针数组int.
但是,如果你只有一些p类型,int**那么你不知道p数组的点.它可能不会.换句话说,指针的类型不能完全描述它指向的内容.
你似乎对数组和指针之间的区别感到很困惑.他们不一样.数组不是指针.数组可以衰减为指针.指针可以指向数组.
也许关键的区别在于数组总是指相同的变量.另一方面,可以使指针指向不同的变量.另一个明显的区别是数组变量定义了存储.另一方面,定义指针变量则不然.您必须始终将指针指定给其他对象的地址.