静态二维数组和动态二维数组(C语言)

C 专栏收录该内容
1 篇文章 0 订阅

1、理解什么是静态二维数组和动态二维数组

静态二维数组:可以理解为程序中如定义的数组(定义一个3行4列的静态二维数组)

int [3][4] = {{1,1,1,1}, {2,2,2,2}, {4,4,4,4}};

动态二维数组:可以理解为程序中如下定义的数组(定义一个3行4列的动态二维数组)

#include<stdio.h>
#include<stdlib.h>

#define ROWS 3
#define COLS 4

int main(int argc, char *argv[]) {

    int **ppi = NULL; //定义整形二维数组指针变量
    int i;

    ppi = (int **)malloc( ROWS * sizeof(int));//为3行4列动态二维数组每行的首地址分配内存


    for (i=0; i<ROWS; i++)
    {
        ppi[i] = (int *)malloc( COLS * sizeof(int));//为3行4列动态二维数组每行分配内存

        ppi[i][0] = i;
        ppi[i][1] = i;
        ppi[i][2] = i;
        ppi[i][3] = i;
    }

    for (i=0; i<ROWS; i++)
    {
        printf("第%d行:%d ", i, ppi[i][0]);
        printf("%d ", i, ppi[i][1]);
        printf("%d ", i, ppi[i][2]);
        printf("%d\n", i, ppi[i][3]);
    }
                                                                                                       
    return 0;                                                                                          
}  



2、静态二维数组内存布局


图示说明:

1)静态二维数组实质是一个数组,内存空间也是连续的

2)ppi是静态二维数组变量,指向二维数组首地址

3)ppi+0:指向静态二维数组第1行首地址

4)ppi+1:指向静态二维数组第2行首地址

4)ppi+2:指向静态二维数组第3行首地址


3、动态二维数组内存布局

图示说明:

1)ppi是动态二维数组变量,执行二维数组首地址

2)ppi[0]、ppi[1]、ppi[2]分别为每行的首地址

  • 14
    点赞
  • 1
    评论
  • 20
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值