动态分配2d数组

时间:2015-05-12 17:02:36

标签: c arrays dynamic multidimensional-array unhandled-exception

我正在尝试创建一个二维数组,特别是有向图的邻接矩阵。 我以前从未尝试过这种动态内存分配,而且我遇到了麻烦。 这是代码:

int n, i;
printf("Number of nodes is: ");
scanf("%d", &n);

int ** array = malloc(n * sizeof(int*));
for(i = 0; i < n; i++)
    array[i] = malloc(n * sizeof(int));

printf("Number of edges is: ");
scanf("%d", &m);

int x, y;
for(i=0;i<m;i++)
{
    scanf("%d %d", &x, &y);
    array[x][y]=1;
}

一旦我完成所有边缘,程序就会停止工作并抛出通常的“exe已经停止工作”。

问题出在哪里?

编辑:houssam发现了我的错误。第一个“for”应该从1变为n。当我输入1 6作为边缘时,程序崩溃,因为只有节点0-5。感谢您发现。这么简单的错误......

1 个答案:

答案 0 :(得分:1)

您可能为$scope.gridOptions = { enableSorting: true, columnDefs: [ { name: 'field1', enableSorting: false }, { name: 'field2' }, { name: 'field3', visible: false } ] }; x输入了错误的值,其值应小于y且大于或等于n

0

编辑#1:
根据用户的评论:M Oehm检查#include <stdlib.h> #include <stdio.h> int main() { int m ,n, i; printf("Number of nodes is: "); scanf("%d", &n); int ** array = malloc(n * sizeof(int*)); for(i = 0; i < n; i++) array[i] = malloc(n * sizeof(int)); printf("Number of edges is: "); scanf("%d", &m); int x, y; for(i=0;i<m;i++) { scanf("%d %d", &x, &y); if (x >=0 && y >= 0 && x < n && y < n) // here array[x][y]=1; else printf("error in your values x=%d y=%d\n" , x , y); } return 0; } 的返回值,请参阅:
scanf fails why?,我可以将代码重构为:

scanf