c語言中函式指標是什麼 有什麼用 舉個例項

時間 2021-08-30 09:31:59

1樓:風若遠去何人留

函式指標是指向函式的指標變數。 因而「函式指標」本身首先應是指標變數,只不過該指標變數指向函式。這正如用指標變數可指向整型變數、字元型、陣列一樣,這裡是指向函式。

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

函式指標的宣告方法為:

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

如: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樓:寒寒家

比如c++中的快排函式qsort, 的最後一個函式就是函式指標 compare, 這個函式決定了排序是從小到大,還是從大到小

int (*compare)(void *a, void*b);

然後咱們定義下面兩個函式:

int ascending(void *a, void *b)

int descending(void *a, void *b)

在呼叫qsort(int a, n,sizeof(int), ascending);就是升序。

而qsort內部實現過程中,對於陣列元素之間的比較,都是使用的compare函式指標完成的。

從這個例子可以看出,函式指標,增加了**的靈活性和複用性(為了升序和降序,不用寫兩個版本的qsort)

c語言中,函式指標的強制型別轉換有什麼作用?

3樓:姬思溪運英

如果你把sub函式bai改為int

sub(int

a,int

b,int

c,int

d,int

e,int

f,int

g,int

h),你就會發現後面du那幾個引數

就zhi變得不dao正常,道理很簡單,版引數push過少,函權數傳遞引數是把引數push進堆疊,在函式題裡面再pop出來,至於什麼作用我也不大清楚,也許是想得到堆疊的資料,不過最好不要這麼用。

4樓:匿名使用者

不同的指標在進行指標加減的時候步長不一樣,int型是4,char型是1,假設ptrint和ptrchar的指標地址都為1,那麼ptrint+1=5,而ptrchar+1=2

5樓:匿名使用者

函式指標強轉儘量bai不要有,僅用於類du型zhi實際是相同的,但定義的

dao變數型別不同內,如

另一個程式設計師寫了段容

**,要求你提供一個函式指標,型別如下:

typedef int (*ftype)(int,int);

但你寫的函式是 unsigned int fun(unsigned int,unsigned int),引數一個有符號,一個無符號,在你知道符號不影響結果的情況下,可以強制轉換。

6樓:匿名使用者

函式指標強轉儘量不要有,僅用於型別實際是相同的,但定義的變數型別不同,專如

另一個程式設計師寫了段**屬,要求你提供一個函式指標,型別如下:

typedef int (*ftype)(int,int);

但你寫的函式是 unsigned int fun(unsigned int,unsigned int),引數一個有符號,一個無符號,在你知道符號不影響結果的情況下,可以強制轉換。

7樓:倪丫愛

如定義的型別是int

int a

如果後來用到的a是小數則

可(double)a

那麼你輸入的a就可是小數的演算法了

C語言的指標有什麼用,C語言中的指標到底有什麼用

c的函式引數傳遞規則是傳值,所以無論你對傳入函式的行參如何改變,函式返回,輸入函式的引數原來是什麼就還是什麼,用指標間接訪問,使得引數的傳遞變為傳址,就可以對這個引數進行改變.大概的意思就是這樣的,當然指標決不只這一點用途,作用太大了,你還是要好好學學的 c提供了兩種訪問變數的方法。通過變數名和通過...

c語言的函式指標舉個例子,c語言中函式指標是什麼 有什麼用 舉個例項

劉文正粉絲 函式指標告訴cpu下一步需要執行 的 的指標,一陣列十分相像.include void function int i,double d 一個函式的宣告 void anotherfunction int i,double d 另外一個函式宣告 int main mxl033 回答是對的。v...

c語言中清屏函式是什麼,C語言中清屏函式是什麼?

莊生曉夢 c語言中清屏函式是為清除螢幕上的輸出功能,用法是 void clrscr void 程式例 include int main int i clrscr for i 0 i 20 i cprintf d r n i cprintf r npress any key to clear scre...