快速识别-‘指针数组和‘数组指针

50次阅读

共计 391 个字符,预计需要花费 1 分钟才能阅读完成。

引言

指针数组:元素为指针的数组   int* p[5];    
数组指针:指向数组的指针    int(*p)[5]

一、汉字名称

指针数组是一个数组,数组指针是一个指针。就是以后面的词(宾语)决定。举例:红苹果  是一个苹果
    苹果红  是一种颜色

二、C 语言定义

int* p[5]   []优先级高于 *,所以 p[5]先定义一个数组,int* 再把 p[5](包括数组中所有元素)定义为指针。此时 p 仍然和 [5] 以数组形式存在,只是‘p[5]’这个数组中的元素都被定义成了指针。int(*p)[5]  括号优先级高,* p 定义为一个指针,我们把 * p 看成一个整体,用 a 代替,变为 int a[5]; 可以看出这就是一个普通数组的定义。只不过指向数组地址的 a 变成了 *p,p 是一个二级指针,他的值 *p=a, 而 a 是数组的指针。此时 * p 以指针的形式存在。这个指针指向数组(第一个元素的地址)。

注意:到底是“数组”还是“指针”,这里边的主角是 p。
链接 Raw 编辑

正文完
 0