아래 코드에서 file.rec
을 main
으로 읽고 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);
//
}
함수는 자연스럽게 자체에 대한 포인터로 쇠퇴합니다. 배열이 첫 번째 요소에 대한 포인터로 쇠약하는 것과 유사합니다. 내가 그것에 대해 명시 적으로 권장하고 항상 연산자의 주소를 사용하는 '&'. –