我絕對是新來的C,我試圖初始化一個函數中的數組。在一個函數初始化數組
但它不起作用,因爲如果我想要在主要方法中打印值,我總會遇到分段錯誤。
static void array(int *i)
{
int j = 0;
i = (int *) malloc(5 * sizeof (int));
for (j = 0; j < 5; j++) {
i[j] = j;
}
for (j = 0; j < 5; j++) {
printf("Hello: %d\n", i[j]);
}
}
/* Main entry point */
int main(int argc, char *argv[])
{
int j;
int *i = NULL;
array(i);
for (j = 0; j < 5; j++) {
printf("Hello: %d\n", i[j]);
}
return 0;
}
如果有人能夠修復代碼並能解釋它是如何工作的,那會很好。
'I =(INT *)malloc的(5 *的sizeof(int)的);'只會影響函數得到的指針副本,而不是調用方中的指針。讓我找到一個重複的。 –
換句話說:指針作爲值傳遞,而不是作爲參考傳遞,因此不會更新。當你退出array()函數時,我的值得到了它的原始值。 – m0skit0
請勿施放'malloc'的結果。 – chris