【发布时间】:2018-06-27 21:33:18
【问题描述】:
我正在为动态分配的二维数组编写这个简单的代码并显示它。当我执行这个程序时,它在第一行给出垃圾值。那个怎么样?我的程序有错误吗?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int **ptr, limit, i, j;
printf("Enter the limit: ");
scanf("%d", &limit);
ptr = (int **) malloc(limit * (sizeof(int)));
for(i=0; i<limit; i++)
{
*(ptr+i) = (int *) malloc((i+1) * sizeof(int));
for(j=0; j<=i; j++)
{
ptr[i][j] = i;
}
}
for(i=0; i<limit; i++)
{
for(j=0; j<=i; j++)
{
printf("%d ", ptr[i][j]);
}
printf("\n");
}
return 0;
}
输出:
Enter the limit: 4
0
1 1
2 2 2
3 3 3 3
Enter the limit: 5
9478320
1 1
2 2 2
3 3 3 3
4 4 4 4 4
如果我尝试打印限制小于或等于 4 的二维数组,它可以正常工作。我在这里错过了什么..
谢谢
【问题讨论】: