c語言定義函數數組
A. c語言中能不能定義函數數組
函數不可以定義為數組,可以用函數指針來操作。
1.函數指針的數組定義方法:返回值類型( * 指針變數名[Number]) (形參列表)。
例如:
double add(double a,double b){}
double sub(double a,double b){}
double mul(double a,double b){}
double div1(double a,double b){}
double (*oper_func[])(double, double) = {add,sub,mul,div1};//函數指針的數組定義。
2.函數指針是指向函數的指針變數。 因而「函數指針」本身首先應是指針變數,只不過該指針變數指向函數。這正如用指針變數可指向整型變數、字元型、數組一樣,這里是指向函數。
C在編譯時,每一個函數都有一個入口地址,該入口地址就是函數指針所指向的地址。有了指向函數的指針變數後,可用該指針變數調用函數。
(1)c語言定義函數數組擴展閱讀:
指針函數和函數指針的區別:
這兩個概念都是簡稱,指針函數是指返回值是指針的函數,即本質是一個函數。我們知道函數都有返回類型(如果不返回值,則為無值型),只不過指針函數返回類型是某一類型的指針。其定義格式如下所示:返回類型標識符*函數名稱。
返回類型可以是任何基本類型和復合類型。返回指針的函數的用途十分廣泛。事實上,每一個函數,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當於一個指針。比如函數返回一個整型值,實際上也相當於返回一個指針變數的值,不過這時的變數是函數本身而已,而整個函數相當於一個「變數」。
參考資料:網路 -函數指針
B. c璇璦瀹氫箟涓涓鐢ㄤ簬杈撳叆鏁存暟鏁扮粍鍏冪礌鐨勫嚱鏁幫紵
瑕佸畾涔変竴涓鐢ㄤ簬杈撳叆鏁存暟鏁扮粍鍏冪礌鐨勫嚱鏁幫紝鎮ㄥ彲浠ヤ嬌鐢ㄤ互涓婥璇璦浠g爜錛
鍦ㄤ笂榪頒唬鐮佷腑錛屾垜浠瀹氫箟浜嗕竴涓鍚嶄負input_array鐨勫嚱鏁幫紝璇ュ嚱鏁版帴鍙椾袱涓鍙傛暟錛氫竴涓鏁存暟鏁扮粍arr鍜屼竴涓鏁存暟n錛岃〃紺烘暟緇勭殑闀垮害銆傚嚱鏁頒嬌鐢╢or寰鐜榪浠f暟緇勪腑鐨勬瘡涓鍏冪礌錛屽苟浣跨敤scanf鍑芥暟浠庣敤鎴瘋緭鍏ヤ腑璇誨彇涓涓鏁存暟錛屽苟灝嗗叾瀛樺偍鍒板綋鍓嶅厓緔犱腑銆
鍦╩ain鍑芥暟涓錛屾垜浠澹版槑涓涓闀垮害涓10鐨勬暣鏁版暟緇刟rr錛屽苟浣跨敤input_array鍑芥暟杈撳叆鏁扮粍鍏冪礌銆傛偍鍙浠ュ皢鏁扮粍闀垮害鍜屾暟緇勫彉閲忓悕鏇存敼涓烘偍闇瑕佺殑鍊箋
璇鋒敞鎰忥紝涓婅堪浠g爜涓鐨勮緭鍏ユ柟娉曟槸綆鍗曠殑紺轟緥浠g爜錛屽苟涓斾笉鍏鋒湁鍋ュ.鎬с傚湪瀹為檯緙栫▼涓錛屾偍闇瑕佽冭檻鍚勭嶈緭鍏ユ儏鍐碉紝渚嬪傝緭鍏ュ間笉鏄鏁存暟絳夛紝浠ラ伩鍏嶆綔鍦ㄧ殑閿欒銆
C. C語言,在函數里要輸入一個數組怎麼辦
用指針就可以了,如
定義有int a[5];
則這樣定義函數:
int fun(int *p, int size)
{
//p為數組的首地址
//size為數組的大小
//傳遞進去後可以像操作a一樣用下標操作p
//如p[0], p[4]...
}
傳遞參數給函數可以這樣寫:
fun(a, 5);
若是多維數組,則第一維大小不給出,只指定後面的維數大小,如:
定義有int a[5][2];
則這樣定義函數:
int fun(int p[][2], int size)
{
//p為數組的首地址
//size為第一維的大小
//傳遞進去後可以像操作a一樣用下標操作p
//如p[0][1], p[4][1]...
}
傳遞參數給函數可以這樣寫:
fun(a, 5);