首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针数组和malloc数组

指针数组和malloc数组
EN

Stack Overflow用户
提问于 2013-01-18 08:22:01
回答 3查看 287关注 0票数 3

我正在尝试使用指针将数据从std存储到数组中。main将d声明为int *d;,当我使用gdb单步执行它时,函数使用x = getdata(&d);调用。当它尝试*di=val时,它在for循环的第一次迭代时终止;

代码语言:javascript
复制
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;

}

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-18 08:35:43

内存应按如下方式分配

代码语言:javascript
复制
*d = malloc(count * sizeof **d);

应按如下方式访问这些值

代码语言:javascript
复制
(*d)[i] = val;

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

票数 2
EN

Stack Overflow用户

发布于 2013-01-18 08:27:26

你所拥有的是一个指向数组的指针,而不是一个指针数组。

1) malloc返回空*,因此需要将结果赋值给*d,而不是d

2)你想要的数据大小是一个int,而不是一个int* (使用*d得到一个int*,其中**d是一个整数)

代码语言:javascript
复制
*d = malloc(sizeof(**d) * count);

3)索引数组需要稍有不同的语法

代码语言:javascript
复制
(*d)[i] = val;

printf("%d\n", (*d)[i]);

4)第二个scanf需要一个指针,而不是int

代码语言:javascript
复制
scanf("%d", &val);
票数 2
EN

Stack Overflow用户

发布于 2013-01-18 08:28:20

代码语言:javascript
复制
*d = malloc(count * sizeof(int));

然后

代码语言:javascript
复制
(*d)[i] = val
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14390547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档