C 语言定义动态二维数组

C 语言定义动态二维数组

C语言定义动态二维数组

1 为不能直接定义int [n][n]2 动态定义二维数组的方法

1 为不能直接定义int [n][n]

C语言里,所有变量空间都是在程序运行之初向系zd统申请的, 包括指针,除了一些动态申请方式如malloc函数。 没有申请的空间系统是不允许读写的。 那么如果一个数组大小是变量定义, 则在程序运行前不能确定数组大小, 也就无法申请,故不允许。 所以,解决的办法便是通过malloc函数,即 int a[n]; 可改为 int* const a = (int*)malloc(sizeof(int)*n);

2 动态定义二维数组的方法

#include

#include

int main()

{

int **p; //定义二维指针。

int m, n;//行数和列数。

int i,j;

scanf("%d%d", &m, &n); //输入行数和列数。

if(m <= 0 || n <= 0) return -1; //行数或列数非法。

p = (int **) malloc(sizeof(int *) *m);//申请一组一维指针空间。

for(i = 0; i < m; i ++)

p[i] = (int *)malloc(sizeof(int) * n); //对于每个一维指针,申请一行数据的空间。

for(i = 0; i < m; i ++)

for(j = 0; j < n; j ++)

scanf("%d",&p[i][j]);//输入第i行第j列的数据。其中&p[i][j]也可以写作p[i]+j或者是 *(p+i) + j. 功能相同。

printf("输入的数组为%d行%d列:\n", m, n);

for(i = 0; i < m; i ++)

{

for(j = 0; j < n; j ++)//这个循环可以输出一行元素。

printf("%d ", p[i][j]);//输出i行j列的元素。

printf("\n");//每行输入结束加换行符。

}

//释放内存

for(i = 0; i < m; i ++)

free(p[i]);

free(p);

return 0;

}

相关文章

🪶
传奇世界未知暗殿boss刷新时间全解析
线上365bet正网

传奇世界未知暗殿boss刷新时间全解析

06-27 👀 3552
🪶
青云志2多少集(青云志2怎么才18集)
365平台app下载

青云志2多少集(青云志2怎么才18集)

07-16 👀 5573