二维数组

来源:互联网 发布:linux 开启端口软件 编辑:程序博客网 时间:2024/06/06 07:43
#include<stdio.h>int main(){    int a[3][4]={{1,6,7},{4,2,5},{-3,9,8,3}};    printf("%d\n" ,*(*(a+1)+2));        return 0;}

一个二维数组

a[0] [0] 1,6,7

a[1] [0] 4,2,5

a[2] [0] -3,9,8,3

首先a表示首元素a[0][0]的地址

a+1表示a[1][0](第二组元素的地址)

*(a+1) = a[1] //a[1]表示数组名为a[1]的数组的首元素的地址,既a[1][0]的地址。

然后*(a+1)+2就在第二个数组首元素的地址上加8个字节就到了a[1][2]的地址

最后到了*(*(a+1)+2) ==a[1][2] = {5}

既最后的结果5。



今天又听人讲到一种理解,说a+1指向的是行数*(a+1)则指向列数,之后的*(a+1)+2就是对列加二,所以就是5。我觉得这样也可以理解



0 0
原创粉丝点击