基本上,它爲什麼不只是打印輸入的整數。現在它只是打印垃圾值,但我不知道爲什麼它不能訪問離開函數後存儲的值。它似乎只有在離開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