c-二维数组赋值及二维指针使用

c-二位数组赋值及二维指针使用


#include <stdio.h>

void main()
{
int test[3][2] = {{1, 1}, {2, 2}, {3, 3}};
int (*tmp)[2] = test;
printf(“value = %d\n”, *(tmp+0));
printf(“value = %d\n”, **(tmp+0));
printf(“value = %d\n”, (tmp+1));
printf(“value = %d\n”, **(tmp+1));
printf(“value = %d\n”, ((tmp+0)+1));
printf(“value = %d\n”, ((int)tmp+0
2+1));
}

gcc test.c -o test
./test

value = 730373856
value = 1
value = 730373864
value = 2
value = 1
value = 1

tmp是二位数组,同时也可以作为二位指针使用。
tmp代表的是数组的首地址
**tmp代表数组首地址存储的值
(tmp+1)代表第二行首地址
**(tmp+1)代表第二行首地址存储的值,也就是上例中2
(tmp)+1是第一行第二个元素的地址值 == (int)tmp+0
2+1 首地址加上第一行第二个元素的偏移
同理:
(tmp+m)+1是第m行第二个元素的地址值 == (int*)tmp+m*2+1 首地址加上第m行第二个元素的偏移

分享心得,仅此而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值