美文网首页
二维数组指针

二维数组指针

作者: 家有萌犬 | 来源:发表于2018-07-25 21:36 被阅读0次
    //定义二维数组
    int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
    

    假设a的地址为1000(即第一个元素地址),则整个a在内存中的地址如下图:

    二维数组内存数据图.png

    测试代码

    #include<stdio.h>
    
    main() {
        int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
    
    
        printf("第0行地址-------\n");
        printf("第0行地址:%p\n", a);
    
        printf("第0行地址:%p\n", a[0]);
    
        printf("第0行地址:%p\n", *(a + 0));
    
        printf("第1行地址-------\n");
    
        printf("第1行地址:%p\n", a + 1);
        printf("第1行地址:%p\n", *(a + 1));
        printf("第1行地址:%p\n", a[1]); 
    
        printf("a[1][1]地址-------\n");
        printf("a[1][1]地址:%p\n", a[1] + 1);
        
        printf("a[1][1]地址:%p\n", &a[1][1]);
    
        printf("a[1][1]值:%d\n", *(a[1] + 1));
    
        system("pause");
        
    }
    

    运行结果:


    运行结果.png

    通过图可见在内存中地址是连续的。
    a,a[0]:指第0行首元素地址,即1000;
    a+1, *(a + 1):第一行首元素地址

    相关文章

      网友评论

          本文标题:二维数组指针

          本文链接:https://www.haomeiwen.com/subject/xjmmmftx.html