C语言使用malloc分配和管理二维数组内存空间

C语言,使用malloc分配和管理二维数组内存空间

//
// Created by wangw on 2024/1/5.
//
#include 
#include 

int main() {
    /*
     * 使用malloc分配和管理二维数组内存空间
     */

    // 读取行数列数
    int ROW, COL;
    printf("输入行数:");
    scanf("%d", &ROW);
    printf("输入字段数量:");
    scanf("%d", &COL);

    // 定义和空间分配
    int **rows = (int **) malloc(ROW * sizeof(int *));
    for (int i = 0; i < ROW; i++) {
        rows[i] = (int *) malloc(COL * sizeof(int));
    }

    // 赋值
    for (int i = 0; i < ROW; i++) {
        for (int j = 0; j < COL; j++) {
            rows[i][j] = i * 10 + j;
        }
    }

    // 遍历 方式1:下标
    for (int i = 0; i < ROW; i++) {
        for (int j = 0; j < COL; j++) {
            printf("%02d %p    ", rows[i][j], &rows[i][j]);
        }
        putchar('\n');
    }
    printf("\n");

    // 遍历 方式2:指针
    int **p = rows;
    int *pd;
    for (int i = 0; i < ROW; i++) {
        pd = *p;
        for (int j = 0; j < COL; j++) {
            printf("%02d %p    ", *pd, pd);
            pd++;
        }
        putchar('\n');
        p++;
    }

    // 回收
    for (int i = 0; i < ROW; i++) {
        free(rows[i]);
    }
    free(rows);

    return 0;
}

运行结果

C:\Users\wangw\CLionProjects\demo01\cmake-build-debug\a01.exe
输入行数:3
输入字段数量:3
00 00000248699d1470    01 00000248699d1474    02 00000248699d1478
10 00000248699d1490    11 00000248699d1494    12 00000248699d1498
20 00000248699d14b0    21 00000248699d14b4    22 00000248699d14b8

00 00000248699d1470    01 00000248699d1474    02 00000248699d1478
10 00000248699d1490    11 00000248699d1494    12 00000248699d1498
20 00000248699d14b0    21 00000248699d14b4    22 00000248699d14b8

Process finished with exit code 0

你可能感兴趣的:(c语言,开发语言)