c语言中的指针数组和数组指针的区别

2024-11-07 10:22:43
推荐回答(2个)
回答1:

指针数组:数组里的每一个元素都是指针如*p[10],里面的 p[0] 到 p[9] 都是指针;

可参考:http://baike.baidu.com/link?url=UejdrqVcDuHTMC_8__WmHL4YUfjTnWfEywIGgkJ_HR7qwIXy7DrOZKO_colWnI0xCRi3YgUKjEHCG9lWtfpLha

数组指针:指向一个数组的指针,如 arr[10] 是一个数组, 让一个指针指向这个数组 p = arr;
访问时通过 *(p + n) 或 p[n] 访问元素值,n为元素索引值;

可参考:http://baike.baidu.com/link?url=LOLbh2c9LGZJ6YbsyMQLl3GYMyEE3O7uGGKoyc1w_H2Y5uOUtTVs4YpUNjFFkCA60iSOMGVOafskmptYyuKhVq

回答2:

int (*p)[4]; // 定义一个数组指针,指向含4个元素的一维数组,数组元素是int类型。
int *p[4]; // 定义一个指针数组,数组中每个元素是一个指针,指针指向哪里就要根据程序来定了。

判断数组指针与指针数组主要通过运算符的优先级来判断。
int (*p)[4]; // 由于( )的优先级高,说明p是一个指针,指向一个一维数组的指针
int *p[4]; // 由于[ ]的优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组