一直對c 的知識都是懵懵的,總是用著用著 開始覺的疑惑,然後就找找資料,現在就記錄一下 函式指正 和 指標函式 的區別。
順便記一下 : 現在耳機裡的**是 river flows in you ---yiruma
函式指標:本質是 指標變數 其指向的是函式
宣告: 函式返回值型別 (*指標變數名)(函式引數) -------int (*func)(int,int)
使用:func =&test 假設有個函式 int test( int ,int )
實際上 func ==* fcun 在下面的程式中可以看到 它們列印的值相同
知乎上有見到:printf("cpp_func = %p\n", cpp_func);
printf("*cpp_func = %p\n", *cpp_func);
區別 是 func 可以是左值 本質還是乙個變數可以在 賦值符左邊 但是*func實際上 就是乙個位址值 不能作為左值
cpp_func = (int (*)(int,int))dlsym(libcpptest, "_z4summii"); 是正確的
*cpp_func = (int (*)(int,int))dlsym(libcpptest, "_z4summii"); 是錯誤的
對於函式名: &函式名=*函式名=函式名
對於函式指標: *函式指標=函式指標 != &函式指標
這樣說 也沒錯 但是使用時還是要 區別一下
指標函式:本質是乙個函式 其返回值是乙個某種型別的指標
宣告 :指標型別名 *函式名 (函式引數) 或者這樣要更專業些 *****== 型別識別符號 *函式名 (函式引數)
使用:通常返回乙個位址 如:常用於返回陣列的某個元素的位址 或 值 (可以是多維陣列)
typedef:生成乙個新的型別#includeint *f(int *b)
int main(int argc,char** argv)
; p=f(a);
printf("%p\n",p); //指標
printf("%d\n",*f(a)); //指標指向的值
printf("%d\n",*p); //指標指向的值
return 0;
}//執行的結果
0xbfb09d9c
22
-----用於自定的型別 系統的型別int 什麼的就不用了哈
#include #includeint main(int argc, char **argv)
/*1.
ct@ubuntu:~/desktop$ ./a.out
cpp_func = 0xb773952b
cpp_func output = 20
typedef int (*fun)(int,int) fun 新的型別 ---不再是變數 fun 為指標函式的型別
此時fun 可以宣告 變數
fun func1
func1 *****int (*fun)(int,int)
2.ct@ubuntu:~/desktop$ ./a.out
cpp_func = 0xb7759000
cpp_func output = 20
而 fun *cpp_func; cpp_func這是乙個二級指標 ,cpp_func指向的乙個指標函式變數
*cpp_func = (int (*)(int,int))dlsym(libcpptest, "_z4summii"); *cpp_func 指標函式變數
為什麼呼叫函式的時候 :
printf("cpp_func output = %d\n", (*cpp_func)(10,10));都是用這一條語句 不會出錯呢?
應該就是這個原因叭:*函式指標=函式指標
此時的(*cpp_func)(10,10)就是函式指標
*/
函式指標 指標函式 指標的指標 指標陣列
一 函式指標 首先它是乙個指標,只是這個指標指向的是乙個函式。指標變數可以指向變數的位址 陣列 字串 動態分配位址,同時也可指向乙個函式,每個函式在編譯的時候,系統會分配給該函式乙個入口位址,函式名表示這個入口位址,那麼指向函式的指標變數稱為函式指標變數。表示 struct file operati...
函式指標,函式指標陣列,函式指標陣列的指標
函式指標的使用 先看如下例子 include include char fun char p1,char p2 else int main 我們使用指標的時候,需要通過鑰匙 來取其指向的記憶體裡面的值,函式指標使 用也如此。通過用 pf 取出存在這個位址上的函式,然後呼叫它。這裡需要注意到是,在 v...
指標函式,函式指標,指標的指標 詳解
1 指標函式是指帶指標的函式,即本質是乙個函式。函式返回型別是某一型別的指標 型別識別符號 函式名 參數列 int f x y 首先它是乙個函式,只不過這個函式的返回值是乙個位址值。函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調函式中,函式返回值必須賦給同型...