C语言定义并初始化一个二维数组(一维数组模拟)
使用一个一维数组模拟二维数组
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函数输入,所以修改以上代码才可以正常可视化,但是不影响理解“使用一维数组模拟二维数组”