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+02+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+02+1 ⾸地址加上第⼀⾏第⼆个元素的偏移
同理:(tmp+m)+1是第m⾏第⼆个元素的地址值 == (int*)tmp+m*2+1 ⾸地址加上第m⾏第⼆个元素的偏移分享⼼得,仅此⽽已

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。