概述
int arr [4] //定义了一个一维数组,长度为4;说明以下三个分别是什么类型;
(1)arr //类型为int *,表示数组元素首地址,即图中箭头指向的位置。
(2)arr+1 //类型为int *,表示数组元素首地址+1,即图中箭头指向的位置。
(3)arr [0] //类型为int ,表示第一个元素,即图中红色的格子。
int brr [3][4] //表示定义了一个3行4列的二维数组,说明以下三个分别是什么类型;
(1)brr //类型为int(*p)[4], 把一个二维数组想象成一个特殊一维数组并遵循行优先原则,那么也表示数组首地址,int(*p)[4]的含义就是整型指针p指向有4个格子的数组 ,就是数组指针(指向数组的指针),即图中箭头指向的位置。
(2)brr+1//类型为int * p[4],同样把二维数组想象成一维数组,那么brr+1就是首地址+1,即图中箭头指向的位置。
(3)brr [0]//类型为int *,brr[0]==arr,即图中红色的格子。
(4)brr [0]+1//类型为int *,因为指针加法不会改变指针的类型,即图中黄色的格子。
(5)brr [0][0]//类型为int,表示的是数组的第一个元素,即图中的黑色粗框。
总结:遇到复杂类型式子
1.优先级
2.看到以下符号
[ ] 数组要考虑有几个格子;每个格子的数据类型;
()函数要考虑参数列表,返回值;
* 指针要考虑指针指向的是什么
练习:
(1)int(* p)[4] ()的优先级比 * 优先级低,那么表示的是指针p指向的是有4个格子的数组;
(2)int * p [4] [ ]的优先级比 * 优先级高,那么表示的是有4个格子的数组p,保存的是指针。
最后
以上就是诚心镜子为你收集整理的C语言---一维数组与二维数组的全部内容,希望文章能够帮你解决C语言---一维数组与二维数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复