phpjson输出多数组_二维数组中的指针

C语言称地址为指针,这样专门存放地址的变量就是指针变量。充分理解二维数组中的地址有利于运用指针的方式操作二维数组元素,也有利于应用指针变量操作二维数组元素。

1.  二维数组中的地址

若有定义:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

C语言指针视角理解数组中地址:

1.1  行首元素地址

C预言将上述数组看成含有a[0]、a[1]、a[2]3个元素的一维数组,则a[0]、a[1]、a[2]相当于三个一维数组的数组名,代表着对应行的行首元素地址。因此:a[0]等价于&a[0][0]a[1]等价于&a[1][0]a[2]等价于&a[2][0]行首元素地址加1则指向下一个元素,则:a[0]+1等价于&a[0][1]a[1]+1等价于&a[1][1]a[2]+1等价于&a[2][1]

1.2  行首地址

a为数组名,是数组的首地址,也称为行首地址:a 对应第0行行首地址a+1 对应第1行行首地址a+2 对应第2行行首地址

1.3  在VS环境中输出二维数组中的地址

3e8ef56dc38f391a6531e4b1fcfad094.png

上述程序输出结果如下:

c4fcab300ef9c427080c777630a6e4e9.png

从上图可以看出:a和a[0]的值是一样的,但代表的意义不同,a是第0行的行首地址,a[0]是第0行的行首元素地址。因此在这两个地址上加1输出的结果则是不同的,a+1是指向下一行的行首,移动了4*4个字节的位置,因此从地址上可以看出a+1比a多16;a[0]+1是指向下一个元素,移动4个字节的位置,因此a[0]+1比a[0]多4。

1.4  行首地址和行首元素地址的关系本质上C语言将行首地址当做了存放行首元素地址的存储单元的地址,因此对行首地址做间接运算就得到了行首元素地址:*a==a[0]*(a+1)==a[1]*(a+2)==a[2]请看下列程序加深理解:

eb9a06c149729e76b57983076a196569.png

上述程序运行结果为:

fd2bf872f3d68834004ad58c636610bc.png

2. 用指向整型变量的指针变量逐个输出二维数组元素

从1.4可知,当定义一个指向整型变量的指针引用二维数组的元素时,不能讲数组名赋值给这样的指针变量,必须给行首元素地址。

2.1 逐个输出二维数组元素

e6abb02c5ced0abdafab77bcf875e900.png

2.2 分行逐个输出各个元素

059da397a4fb49368367a477e2fe48e9.png

若使用与数组名等价的指针变量操作二维数组,必须使用行指针变量。要知细节,请听下回分解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值