【发布时间】:2017-04-11 23:48:17
【问题描述】:
在下面的代码中,我在main 中读取file.rec 并将其放入char buf。然后我传递了这个buf 和getCallBack() 函数的函数指针,但我通过两种可用的方式传递函数。因此,该函数通常以这两种方式接收函数指针。所以我很想知道使用与不使用有什么区别。
#include<stdio.h>
void getCallBack(char buf[], void(*executeCallBack)(char[])){
printf("callback recived\n");
executeCallBack(buf);
}
void callBack(char buf[]){
printf("executing callback...\n");
printf("buf content: ");
printf("%s\n", buf);
}
void main() {
FILE *ReadingXmlFile = fopen("texto.rec", "r");
char buf[10000];
fread(buf, 1, 10000, ReadingXmlFile);
fclose(ReadingXmlFile);
printf("passing \"&callBack\"\n");
getCallBack(buf, &callBack);
printf("passing \"callBack\"\n");
getCallBack(buf, callBack);
//
}
【问题讨论】:
-
函数自然衰减为指向自身的指针,类似于数组衰减为指向其第一个元素的指针。不过,我建议明确说明,并始终使用地址运算符
&。
标签: c pointers function-pointers