我正在尝试使用指针将数据从std存储到数组中。main将d声明为int *d;,当我使用gdb单步执行它时,函数使用x = getdata(&d);调用。当它尝试*di=val时,它在for循环的第一次迭代时终止;
int getdata(int **d)
{
int count,val,i,j=0;
scanf("%d", &count);
d = malloc(sizeof *d * count);
for( i = 0; i < count-1; i++) {
scanf("%d",val);
*d[i]=val;
}
for ( i = 0; i < count; i++)
printf("Number %d\n",*d[i]);
return count;}
发布于 2013-01-18 08:35:43
内存应按如下方式分配
*d = malloc(count * sizeof **d);应按如下方式访问这些值
(*d)[i] = val;也不清楚为什么要分配count元素,而只在输入循环中初始化count - 1元素(然后打印输出循环中的所有count元素)。
发布于 2013-01-18 08:27:26
你所拥有的是一个指向数组的指针,而不是一个指针数组。
1) malloc返回空*,因此需要将结果赋值给*d,而不是d
2)你想要的数据大小是一个int,而不是一个int* (使用*d得到一个int*,其中**d是一个整数)
*d = malloc(sizeof(**d) * count);3)索引数组需要稍有不同的语法
(*d)[i] = val;
printf("%d\n", (*d)[i]);4)第二个scanf需要一个指针,而不是int
scanf("%d", &val);发布于 2013-01-18 08:28:20
*d = malloc(count * sizeof(int));然后
(*d)[i] = valhttps://stackoverflow.com/questions/14390547
复制相似问题