【问题标题】:I am not able to put values in the elements of a dynamically allocated array with scanf?我无法使用 scanf 将值放入动态分配数组的元素中?
【发布时间】:2018-12-19 22:25:16
【问题描述】:

如何为从堆内存中调用的数组元素赋值。我想从用户那里获取值,所以我在这里使用 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;

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

【问题讨论】:

  • scanf("%d", num[i]); -> scanf("%d", &amp;num[i]);
  • 而不是pow(10,9)+7,使用1e9 + 7会更容易阅读

标签: c


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-06
    • 2019-07-22
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多