指针和malloc的C数组



我正在尝试使用指针将std中的数据存储到数组中。main声明d为int *d;,函数使用x = getdata(&d);调用。当我用gdb遍历它时,它在for循环的第一次迭代时死亡,当它尝试*d[I]=val时;

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 %dn",*d[i]);
    return count;

}

内存的分配应如下所示

*d = malloc(count * sizeof **d);

应按照以下访问这些值

(*d)[i] = val;

也不清楚为什么分配count元素,而只在输入周期中初始化count - 1元素(然后在输出周期中打印所有count元素(。

*d = malloc(count * sizeof(int));

然后

(*d)[i] = val

您拥有的是指向数组的指针,而不是指针数组。

1( malloc返回一个void*,因此需要将结果分配给*d而不是d

2( 您想要的数据大小是int,而不是int*(使用*d可以得到int*,其中**d是int(

*d = malloc(sizeof(**d) * count);

3( 索引数组需要稍微不同的语法

(*d)[i] = val;
printf("%dn", (*d)[i]);

4( 第二次扫描需要指针,而不是int

scanf("%d", &val);

相关内容

  • 没有找到相关文章

最新更新