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

时间:2018-12-19 22:25:16

标签: c

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

 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;

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

1 个答案:

答案 0 :(得分:1)

namespace App { public partial class A : X { } } 需要一个地址来放置扫描的输入。您是在提供一个值,而不是该值的地址。

为了更好地理解这一点,要打印该号码,您可以将其引用为scanf,但是要获取该号码的地址,则可以使用num[i]