C 對於函式的理解

2021-10-05 11:14:44 字數 832 閱讀 3745

(1)函式的本體是()

(2)可以在此基礎上加上乙個函式名fun()

(3)同陣列一樣,函式名表示函式的首位址

(4)可以任意地指定函式地返回值:void* (),只是沒有函式名,可以void*fun(),這是指標函式

函式指標

是指向函式的指標變數,即重點是乙個指標

格式:型別說明符 (*函式名)(引數)

int (*f)(int x); 

f其實是乙個二階指標,它的每個值都指向完全不同的函式,而*f則代表具體的乙個函式的函式首位址,

當沒有函式名時,這樣寫:

int(*)(int x)

也代表函式指標

重點在於函式指標是個二階指標,而不是函式!用來指向不同的函式

如果使用下面這種語法呢?

typedef void (*fp) (int, const std::string&);     //起個別名

using fp = void (*) (int, const std::string&); //起個別名

這兩種寫法等價,別名都是fp,但是此時fp就不再是函式指標了,而是函式指標的型別,可以用來定義函式指標(函式指標不是函式首位址,而是函式首位址的位址,是二階指標)

例如:using fp = void (*) (int, const std::string&);

fp p = &fun; //fun是函式首位址,&fun是函式指標,fp是函式指標資料型別,用來定義函式指標變數

對於核函式的理解

一直都覺得核函式是乙個很難理解東西,在知乎上看到了乙個解答,感覺不錯。觀點 核函式和對映沒有關係,核函式只是用來計算對映到高維空間之後的內積的一種簡便方法。一般英文文獻對kernel有兩種提法,一是kernel function,二是kernel trick。從trick一詞中就可以看出,這只是一種...

對於strcmp函式的理解

最近在洛谷開始補基礎 所以開始狂刷水題,其中有這麼一題 剛開始看到的時候就是暴力做法,循規蹈矩寫出來就ok了 因為寫的比較暴力 就是偏亂 也感覺ac不了,但還是頭鐵交了一發,沒想到ac了。然後就開始看題解,看看有沒有什麼更好的做法,發現了可以用c 的string類直接判斷,可憐我還是用字元乙個個比較...

對於c指標 的理解

對於乙個指標型別的變數int p,其指類 指類 其所指向的空間的資料型別 為int,並且假設其定義 在乙個主函式中 定義在任意函式中都行 若在其前面加乙個 符並且將這個 p傳遞到乙個自己定義的函式 中,也就是將實參 p傳到乙個函式中去 其本質是將p的首位址取出來,作為實參傳到函式中去,形參head ...