C语言---一维数组与二维数组

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,保存的是指针。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值