C语言定义并初始化一个二维数组(一维数组模拟)

Guanjie Sun / 2023-08-06 / 原文

使用一个一维数组模拟二维数组

1.代码如下

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

int main() {
    int m, n;  // 数组的行数m,列数n
    int *p;
    scanf("%d %d", &m, &n);
    p = (int*)malloc(sizeof(int) * (m*n));

    // 为数组的每一个元素赋值
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &p[n * i + j]);
        }
    }
    
    // 打印数组的每一个元素
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            printf("p[%d]=%d ", n * i + j, p[n * i + j]);
        }
        printf("\n");
    }
    
    // 释放指针p指向的内存空间并将指针置空
    free(p);
    p = NULL;

    return 0;
}

2.输入输出测试(使用的IDE是jetbrains公司出品的Clion

输入的第一行:m n

3.代码可视化

由于网站pythontutor.com不支持scanf函数输入,所以修改以上代码才可以正常可视化,但是不影响理解“使用一维数组模拟二维数组”