我写了以下代码。问题是,当它进入内部循环时,程序堆栈,因此输入过程停止。我做错了什么?
我在这里做的是创建一个指针数组,每个指针指向一个数组 - 每个不同大小的数组。那么偶数行只需要一个数字,而奇数行需要更多。
long int K,i,j;
scanf("%ld", &K);
long int **pl_r;
pl_r = (long int **) malloc(2*K*sizeof(long int *));
for(i=0; i<K; i++)
{
pl_r[2*i] = (long int *) malloc(1 *sizeof(long int));
scanf("%ld", &pl_r[2*i][0]);
pl_r[2*i+1] = (long int *) malloc(pl_r[2*i][0] *sizeof(long int));
scanf("%ld", &pl_r[2*i+1][0]);
for(j=1; j<pl_r[2*i][0]-1; i++){
scanf("%ld", &pl_r[2*i+1][j]);
}
}
答案 0 :(得分:5)
请确保您已添加<stdlib.h>
,以避免在未使用malloc
进行投射时发出任何警告,因为不应使用malloc
进行投射如果我没弄错的话。
然后,为了避免在分配内存时指针和指针之间出现混淆,你可以这样做
pl_r = malloc(K * sizeof *pl_r);
答案 1 :(得分:0)
首先,don't cast the result of malloc
。至于问题,第一个malloc
应该是:
pl_r = malloc(K*sizeof(long int *))
^ this is missing