當這個函數從它的調用返回時,我似乎無法打印任何東西。當我嘗試從函數內打印時,它可以正常工作,但在通話後不會打印。不知道該怎麼辦。傳遞函數指針
int *sched;
getSchedFile(schFile, sched);
printf("%d\n",sched[1]);
void getSchedFile (FILE *file, int *schd){
/* Get the number of bytes */
fseek(file, 0L, SEEK_END);
int bytes = ftell(file);
fseek(file, 0L, SEEK_SET);
schd = malloc(bytes * sizeof(int));
int pos = 0, curDigit;
while((fscanf(file, "%d", &curDigit)) != EOF){
schd[pos]=curDigit;
++pos;
}
}
您正將'sched'指針中包含的值的*副本傳遞給該函數。在函數內部,您將* copy *的值設置爲您malloc的內存地址。由於您傳遞的是存儲在指針中的值,而不是包含指針的內存地址,因此所做的任何更改都將被丟棄。如果你傳遞'* sched'的地址,那麼你可以改變它('sched')指向的位置 - 也可以堅持所做的更改。 – enhzflep
[在C中傳遞char指針]的可能重複(http://stackoverflow.com/questions/14331411/passing-char-pointer-in-c) – 2013-10-13 05:08:10
這個'^^'**實際上是Google * *「傳遞指針不起作用C」。爲什麼不問研究之前呢? – 2013-10-13 05:08:47