[問題] 傳入參數的型別
使用的環境: Ubuntu 11.04 i386
寫 openGL 的時候突然想到的... 但這個問題與 openGL 無關 XD
openGL 要處理鍵盤的輸入時, 要調用此函式:
void glutSpecialFunc(void (*func)(int key, int x, int y));
我寫了一個函式如下:
void my_func(int key, int x, int y) {
...
}
我的使用方式如下, 已確認可以正常運作.
glutSpecialFunc(my_func);
但我突然注意到, glutSpecialFunc 的參數有一個 (*func) <== 一個星號 *
所以我改成以下的方式, 也可以正常運作 !!
glutSpecialFunc(&my_func); // 多一個 & 運算子
這讓我感到很困惑... 故做了以下實驗:
printf("A: %08x\n", (unsigned)my_func);
printf("B: %08x\n", (unsigned)(&my_func));
結果顯示這兩個值是相同的.
我想問的是 my_func 和 &my_func 究竟有什麼差異呢 ?
還有 為何上述那兩個值會相同 ?
ps: 對於一個變數 int my_var, 我知道 my_var 和 &my_var 在記憶體操作的差異
但對於函式而言, 我就不清楚了...
先謝謝強者前輩的解惑 ^_^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.244.203
推
05/13 00:52, , 1F
05/13 00:52, 1F
推
05/13 01:23, , 2F
05/13 01:23, 2F
→
05/13 02:47, , 3F
05/13 02:47, 3F
→
05/13 02:47, , 4F
05/13 02:47, 4F
→
05/13 02:47, , 5F
05/13 02:47, 5F
→
05/13 02:52, , 6F
05/13 02:52, 6F
→
05/13 02:54, , 7F
05/13 02:54, 7F
推
05/13 07:42, , 8F
05/13 07:42, 8F