這是一個我以前不會的用法
如果副程式寫成
int (*ptr)(int a,int b); //ptr是一個函數
int add(int a,int b){
return a+b;
}
int main(void){
int k1;
ptr=add;
k1=(*ptr)(2,2);
}
這是副程式傳址的方式
int k1;
int *k2;
char test ;
char *test2;
int* add(int a, int b){
k1=a+b;
return &k1;
}
char* add2(char a, char b){
k1=a+b;
return (char*)&k1;
}
int main(void){
k2=add(2,2);
test2=add2(2,2);
}
其中
return (char*)&k1;
我一開始的時候,我還搞不懂,這到底是什麼
&k1 是取址,而前面加了個(char *) 又是什麼
後來才知道
原來
(char*) 有點像是強制轉變數的感覺,只是轉的指標,但有趣的是,傳位置的時候,大小是不會變的
會變的是*ptr 的內容。
給大家做參考。
PS:書本寫的比較清楚,可以參考:蔡明志,指標的藝術,碁峰(這個字我打不出來,「山」字邊在上頭才對)。
這是function pointers的用法
回覆刪除我在callback function還蠻常用到的