【发布时间】:2015-02-11 05:23:14
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p, n, i;
printf("Enter the size of the array:");
scanf("%d", &n);
p = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; i++)
{
printf("\n Enter element %d:", i + 1);
scanf("%d", &p[i]);
}
for (i = 0; i < n; i++)
printf("\n %d", p[i]);
return 0;
}
为什么我们需要在scanf中写&,如果是数组就不需要了?
p 是指向所有内存空间的指针,所以 &p[i] 应该给出指针的地址,而不是我们想要存储数据的位置,对吧?
此外,如果我们在printf 中写入*p[i],它会给出错误,p 是一个指针,所以我们应该尊重它并将数据存储在内存中的保留空间中,但它不起作用?即使我按原样编译上述程序,在输入 3 个值后它也会停止工作。
【问题讨论】:
-
您为程序提供的确切输入是什么?您得到的确切结果是什么?
-
“
p是一个指针,所以我们应该尊重它”:我们这样做,通过使用与*(p + i)相同的p[i]。 -
@DavidSchwartz 没有。元素数:5 我可以输入 ele 1、ele 2 和 ele 3,但随后它显示程序不工作并停止。
-
@glglgl 如果 p 是一个指针,那么 &p[0] 应该给出指向 element[0] 的指针的地址,而不是 element[0] 的内存地址?
标签: c