基本上,它为什么不只是打印输入的整数。现在它只是打印垃圾值,但我不知道为什么它不能访问离开函数后存储的值。它似乎只有在离开getIntegersFromUser函数后才会搞砸。如果我在getIntegers函数中运行for循环,它会正确执行,但为什么不在主函数中?为什么我无法访问存储在另一个函数中的值?
在此先感谢您的帮助。
#include <stdio.h>
#include <stdlib.h>
void getIntegersFromUser(int N, int *userAnswers)
{
int i;
userAnswers =(int *)malloc(N*sizeof(int));
if (userAnswers)
{ printf("Please enter %d integers\n", N);
for (i=0;i<N; i++)
scanf("%d", (userAnswers+i));
}
}
int main()
{
int i, M=5;
int *p;
getIntegersFromUser(M, p);
for (i=0;i<5;i++)
printf ("%d\n", p[i]);
return 0;
}
此外,这是一个家庭作业的问题,但它是一个“加分题”,所以我不试图“欺骗”我只是想确保我了解所有的课程材料,但如果你能仍然试图给出一个相当彻底的解释,以便我可以真正了解那些令人敬畏的东西。
提示:*完成你开始*。如果你有'malloc',你应该也有'free'。在大多数情况下,强烈建议在同一个函数中使用'malloc'和'free'。当然,在你调用'free'之后,你不应该访问内存。有了这个提示,你可能会找到一种方法来解决你的问题,通过优雅的方式通过值传递指针。 – 2014-11-23 18:44:38
请注意,函数参数是LOCAL变量。 – Anonymous 2014-11-23 18:47:05