美文网首页
多维数组的内存模型

多维数组的内存模型

作者: 司马捷 | 来源:发表于2016-06-28 15:24 被阅读100次

    代码演示

    #include <stdio.h>
    #include "stdlib.h"
    #include "string.h"
    
    int main(int argc, const char * argv[]) {
    
        
        /**
         *  多维数组
         */
        int a[3][5],i = 0,j=0;
        int tmp = 1;
        for (int i = 0; i<3; i++) {
            for (j = 0; j<5; j++) {
                a[i][j] = tmp++;
            }
        }
        for (int i = 0; i<3; i++) {
            for (j = 0; j<5; j++) {
                printf("%d ",a[i][j]);
            }
        }
        printf("a :%d a+1:%d ",a,a+1);//步长是20字节  5*4;
        printf("a :%d a+1:%d ",&a,&a+1);//步长是60字节
        
        
        /**
         *  定义一个指向数组的指针变量
         */
        int (*pArray)[1];//告诉编译器 分配8个字节 在64位平台下
        printf("-->%lu\n",sizeof(pArray));
        pArray = a;
        for (int i = 0; i<3; i++) {
            for (j = 0; j<5; j++) {
                printf("%d ",pArray[i][j]);
            }
        }
        
        /**
         *  多维数组名的本质 就是一个数组指针
         */
        /**
         *  a+i  代表整个第i个元素的地址. 二级指针
            *(a+i) 代表一级指针  第i行元素的地址
            *(a+i)+j 代表第i行的第j个元素的地址.  ====a[i][j]
         */
        return 0;
    }
    

    内存模型图

    1ACD43C1-E5A4-49FD-9CE6-823A2056CB69.png

    相关文章

      网友评论

          本文标题:多维数组的内存模型

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