幫你理解複雜的指標函式陣列的宣告

2021-06-27 00:21:12 字數 3473 閱讀 6560

??????? //1

int func(int);//定義乙個函式,該函式返回值int,接受乙個int型引數;結合順序為:func(int)--int func(int)

//2//int *return_pointer_array_func1(int)[10];return_pointer_array_func1返回指標陣列的函式,

//結合順序為:return_pointer_array_func1(int)--return_pointer_array_func1(int)[10]--*return_pointer_array_func1(int)[10]

//--int *return_pointer_array_func1(int)[10]

//3//int return_array_func1(int)[10];//定義乙個函式return_array_func1,該函式返回值int[10],接受乙個int型引數;

//結合順序為return_array_func1(int)--return_array_func1(int)[10]--int return_array_func1(int)[10]

//4~5

//??????? 兩者之間差別是,前者是擁有10個整型指標為元素的陣列,array1是乙個陣列名.(存放指標的陣列)

//??????? 後者是pointer1是乙個指標,該指標指向擁有10個整型變數為元素的陣列.(指向陣列的指標)

int *array1[10];//結合順序為 array1[10]-- *array1[10]--int *array1[10]

int (*pointer1)[10];//結合順序為 *pointer1--(*pointer)[10]--int (*pointer)[10]

//pointer1=array1;是錯誤的 兩者型別不相同.

//6int (*return_array_pointer_func(int))[10];//定義乙個返回陣列指標的函式return_array_pointer_func.結合順序為:

//return_array_pointer_func(int)--*return_array_pointer_func(int)--(*return_array_pointer_func(int))[10]

//--int (*return_array_pointer_func(int))[10]

//7int (*func_pointer_array[10])(int);//定義乙個返回int,接受乙個int引數的函式指標陣列.結合順序為:

//func_pointer_array[10]--(*func_pointer_array[10])--(*func_pointer_array[10])(int)--int (*func_pointer_array[10])(int)

//8int (*(*func_pointer_pointer_array)(int))[10]; //定義乙個函式指標的指標的陣列.結合順序為:

//*func_pointer_pointer_array--(*func_pointer_pointer_array) (int)--( *(*func_pointer_pointer_array) (int))

//--( *(*func_pointer_pointer_array) (int))[10]--int ( *(*func_pointer_pointer_array) (int))[10]

//9int *(*(*fun_pointer_pointer_array_pointer)(int)) [10]; //定義乙個函式指標的指標陣列的指標.結合順序為:

//*fun_pointer_pointer_array_pointer--*fun_pointer_pointer_array_pointer)(int)--(*(*fun_pointer_pointer_array_pointer)(int))

//--(*(*fun_pointer_pointer_array_pointer)(int)) [10]--*(*(*fun_pointer_pointer_array_pointer)(int)) [10]

//--int *(*(*fun_pointer_pointer_array_pointer)(int)) [10]

//10

float ( * ( *getvalue()) )();?? 定義乙個函式,該函式不接受引數,返回值型別是乙個指標,返回值型別是乙個指標陣列

//返回值型別是乙個指標陣列指標,返回值型別是乙個指標陣列函式指標,該函式有乙個float返回值,不接受引數 結合順序為:

//getvalue()--( *getvalue())--( *getvalue()) --( * ( *getvalue()) )--( * ( *getvalue()) )()

//--float ( * ( *getvalue()) )();

//定義乙個函式,該函式不接受引數,返回值型別是乙個指標,返回值型別是乙個指標陣列,返回值型別是乙個指標陣列指標,返回值型別是乙個指標陣列函式指標,該函式有乙個float返回值,不接受引數

//11

void * ( *func_pointer1) ( char, int (*)()); //定義乙個函式指標,結合順序為:

//*func_pointer1--( *func_pointer1) ( char, int (*)())--void * ( *func_pointer1) ( char, int (*)());

//12

void ** (*func_pointer2) (int &, char **(*)(char *, char **));? //定義乙個指標,該指標是乙個函式指標,該函式接受兩個引數,

//乙個引數是int &型,乙個是char **(*)(char*,char**)型,返回值是void **型.結合順序為:

//*func_pointer2--(*func_pointer2) (int &, char **(*)(char *, char **))--

//** (*func_pointer2) (int &, char **(*)(char *, char **))--void ** (*func_pointer2) (int &, char **(*)(char *, char **));

//13

float ( * ( * func_array_pointer1[10]) (int &) ) [5];//定義乙個陣列,該陣列存放指標,該陣列存放函式指標,

//函式的返回值是指向陣列的指標,引數是int &.結合順序為:

//func_array_pointer1[10]--* func_array_pointer1[10]--( * func_array_pointer1[10]) (int &)--

//( * ( * func_array_pointer1[10]) (int &) )--( * ( * func_array_pointer1[10]) (int &) ) [5]

//--float ( * ( * func_array_pointer1[10]) (int &) ) [5]

Linux C函式,陣列,指標,複雜宣告

函式的遞迴呼叫 遞迴函式是指 自己呼叫自己 的函式,函式不可能不停的呼叫自己,所以遞迴函式一定具備結束條件 例一 遞迴函式binary search 實現二元搜尋演算法,在排序好的陣列中找到特定元素。首先,該函式根據搜尋條件比較陣列中間的元素,相同就返回該元素指標,不同該函式呼叫自己,在可能的另一半...

深入理解函式指標和函式陣列

理解函式指標首先理解它的型別,首先函式指標是個指標,他指向乙個函式。其次與普通變數指標相同重要的一點是函式指標的型別,如果兩個函式的引數個數 參數列 返回值型別都相同,則這兩個函式是同乙個型別。換句話說同一型別的函式指標可以指向這兩個函式 我們先看乙個例子 include using namespa...

c的函式 陣列指標問題

嫌我碎碎念也沒用,這是我的部落格 哼 函式指標與指標函式我就不多廢話了,粘一點小東西自己體會 指標函式 int fun int x,int y 函式指標 int fun int x,int y 其中要注意 函式指標的使用 fun function fun function 和x fun x fun ...