【发布时间】:2019-09-19 22:35:20
【问题描述】:
我有一个类似的问题:Assigning char array of pointers with scanf
我不想将 char 值分配给指针数组,而是使用 scanf 将值分配给 int 的指针。在以下示例中,我将分配 10 个 int 值,这就是硬编码的原因。
void main(void) {
int *pi;
long sum;
pi = (int *)malloc(10 * sizeof(int));
if(pi == NULL)
/* Error Handling */
printf("\n\nPlease put in 10 values.\n\n");
for(int i = 0; i < 10; i++) {
printf("%d. Value: ", i + 1);
scanf("%d", pi + i);
/* It was scanf("%d", pi + 1) in previous version. */
sum += *(pi + i);
/* Same issue, it was sum += *(pi + 1) in the previous version. */
}
printf("\nSum of dynamic allocated memory: %ld", sum);
free(pi);
}
插入 10 个值后,输出为 6474931,我猜这是初始值。知道我做错了什么吗?
感谢您的任何帮助,非常感谢。
【问题讨论】:
-
变量
sum未初始化。像long sum = 0一样初始化它。
标签: c dynamic malloc scanf allocation