c語言 怎麼呼叫指標陣列函式,C語言 怎麼呼叫指標陣列函式

2021-05-05 13:43:01 字數 1647 閱讀 1391

1樓:匿名使用者

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) = ;//函式指標的陣列定義

2.函式指標是指向函式的指標變數。 因而「函式指標」本身首先應是指標變數,只不過該指標變數指向函式。

這正如用指標變數可指向整型變數、字元型、陣列一樣,這裡是指向函式。c在編譯時,每一個函式都有一個入口地址,該入口地址就是函式指標所指向的地址。有了指向函式的指標變數後,可用該指標變數呼叫函式,就如同用指標變數可引用其他型別變數一樣,在這些概念上是大體一致的。

函式指標有兩個用途:呼叫函式和做函式的引數。

3.函式指標的宣告方法為:

返回值型別( * 指標變數名) (形參列表);

「返回值型別」說明函式的返回型別,「( * 指標變數名)」中的括號不能省,括號改變了運算子的優先順序。若省略整體則成為一個函式說明,說明了一個返回的資料型別是指標的函式,後面的「形參列表」表示指標變數指向的函式所帶的引數列表。例如:

int func(int x); /* 宣告一個函式 */

int (*f) (int x); /* 宣告一個函式指標 */

f = func; /* 將func函式的首地址賦給指標f */

或者使用下面的方法將函式地址賦給函式指標:

f = &func;

賦值時函式func不帶括號,也不帶引數,由於func代表函式的首地址,因此經過賦值以後,指標f就指向函式func(x)的**的首地址。

例子:#include

int max(int x,int y)

int main()

2樓:

#include

#include

void paixu(char **a) }} }

void main()

; int i;

printf("輸出地址\n\n");

for(i=0;i<5;i++)

paixu(a);

printf("最終排序是\n\n");

for(i=0;i<5;i++) }

main函式中a是常指標,它指向一組陣列,這組陣列每個元素又是指向字串的指標,所以陣列中每個元素的型別是char* , 因此變數a的型別是(char*)*,即char**.排序沒有必要返回char吧(完成排序功能還用返回一個字元麼?),函式引數改為char**型別,這樣才能將指標陣列首地址傳入函式.

向函式裡傳入的是陣列指標,我更改的是陣列元素,這是明顯的按地址傳遞方式傳遞引數,還用再return麼.

3樓:匿名使用者

指標陣列 就是有一個陣列,陣列中的元素都是指標,這些指標有相同的型別int *a[3];

char *b[4];

double *c[5];

char paixu(char *a[5]) //這樣才是字串陣列 }} }

c語言指標陣列如何存放函式地址C語言指標陣列如何存放函式地址

c c 的指標的靈活,常把許多初學者搞暈,連高手也是如此。1.當然,可以呀,一切資料都可返回 2.複合指標型別直接表示非常麻煩 連高手都是這樣 可以分解成多個簡單型別 typedef void funtype void funtype num 100 分解後簡單多了!3.因為函式名不是字串,初始化時...

C語言子函式呼叫糾錯,C語言子函式呼叫糾錯

第一 要保證可以最終退出。就是說,這樣的呼叫最終可以回來。第二 避免迴圈呼叫。就是說當a呼叫b,然後b又呼叫a這種情況,一定要有可以跳出的情況,讓某個a或者b在一定條件下不再呼叫對方就可以返回。第三 避免呼叫深度過深。就是說不能一直呼叫下去。這個具體能夠呼叫多少次根據你的硬體 等具體情況確定的。一般...

C 函式呼叫二維陣列,C語言一維陣列轉二維陣列

n如果是變數的話,陣列編譯時都通不過吧。陣列分配時必須知道大小。函式應該這樣宣告function char array 10 10 或省略第一維的大小function char array 10 function char array n n 這樣是錯誤的,陣列的索引必須是個常量表示式。如果需要必須...