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

多维数组的内存模型

作者: 司马捷 | 来源:发表于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

相关文章

  • 多维数组的内存模型

    代码演示 内存模型图

  • 多维数组

    创建多维数组 多维数组可以看成是数组的数组,二维数组是最基本的多维数组。 要创建多维数组,请将每个数组放在其自己的...

  • 第10章,再论指针

    多维数组的内存布局 指针数组就是Iliffe向量 这样的结构就不是线性的内存结构了,而且每个一维向量大小还可以不一...

  • NumPy--ndarray 的创建和各种数据类型

    ndarray 的创建和各种数据类型 创建 由一维数组创建 多维数组内存结构 普通二维数组创建 zeros emp...

  • TS学习笔记(5)-多维数组

    多维数组的使用 ========= 知识点 多维数组的定义方法 多维数组的使用方法 代码

  • 4.3~1多维数组

    多维数组可以看作是数组的数组,如果将多维数组看作是比较特殊的一维数组,那数组的元素本身就是数组。在学习多维数组之前...

  • 面试知识点梳理

    Java相关 容器(HashMap、HashSet、LinkedList、ArrayList、数组等) 内存模型 ...

  • 2019-07-27

    多维数组: int [][]; 多维数组的声明 ; int [] [] a = new [2][3] new [...

  • 数组

    Arrays工具类的使用 多维数组 多维数组存储表格数据

  • 学习Java第五天

    数组是多个数据的集合 数组的语法 数组元素类型【】 数组名; 多维数组: 数组元素类型【】【】 数组名; 多维数组...

网友评论

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

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