c - 我无法使用 scanf 将值放入动态分配的数组的元素中?

标签 c

我该怎么做才能为从堆内存中调用的数组元素赋值。我想从用户那里获取值,所以我在这里使用 scanf 但是当我尝试将第一个值分配给数组的第一个元素时,编译器显示段错误(核心已转储)并且我无法进一步分配值(value)观。

 int n,i;
 int *num;
 int answer = 1;

scanf("%d", &n);

num = (int*)(malloc(n*sizeof(int)));

for(i=0; i<n; i++)
{
    scanf("%d", num[i]);
    answer = (answer*num[i])%(((int)pow(10,9))+7);
}

printf("\n%d",answer);
free(num);
return 0;

我想将值赋给数组的所有元素,这些元素将由用户定义数组大小和数组内的值。

最佳答案

scanf 需要一个地址来放置扫描的输入。您提供的是一个值,而不是该值的地址。

为了更好地理解这一点,要打印数字,您可以将其引用为 num[i],但要获取相同数字的地址,您可以使用 &num[i]

关于c - 我无法使用 scanf 将值放入动态分配的数组的元素中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53860008/

相关文章:

c - 这个 C 代码在语法上正确吗?

c - 具有无限参数的 C 函数?

c - 在 C 中实现 strcpy 时出现问题

c++ - 为什么我的 scanf() 没有在数组上迭代 for 循环?

c - 我将如何使用 EOF 结束以下代码中的输入?

c - Julia 用实数设置计算

c++ - CUDA 真的没有类似 calloc() 的 API 调用吗?

java - 以明文形式查看 UDP 消息时出现问题

c - 如何在C中打印毫秒?

c - 值在 'scanf' 之后发生变化