当这个函数从它的调用返回时,我似乎无法打印任何东西。当我尝试从函数内打印时,它可以正常工作,但在通话后不会打印。不知道该怎么办。传递函数指针
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