學點 C 語言(38): 函數 – 函數指標

來源:互聯網
上載者:User
先複習函數的定義與函數的聲明:
//這是一個求和函數的定義:int add(int x, int y){    return(x + y);}//可以這樣聲明:int add(int x, int y);//也可以這樣聲明:int add(int, int);

定義一個函數指標聲明一個函數差不多, 用 (* ) 包括函數即可:

//像這樣:int (*pfun)(int, int);//或這樣:int (*pfun)(int x, int y);//也可以:typedef int (*pfun)(int, int);//這就聲明了一個叫 pfun 的函數指標, 能被它指向的函數一定要有相同的參數格式.

1. 簡單例子:

#include <stdio.h>int add(int x, int y) {return(x + y);}int sub(int x, int y) {return(x - y);}int mul(int x, int y) {return(x * y);}int div(int x, int y) {return(x / y);}int main(void){    int (*pf)(int, int);    pf = add;    printf("%d\n", pf(9, 3)); /* 12 */        pf = sub;    printf("%d\n", pf(9, 3)); /* 6  */        pf = mul;    printf("%d\n", pf(9, 3)); /* 27 */        pf = div;    printf("%d\n", pf(9, 3)); /* 3  */        getchar();    return 0;}

2. 函數指標數組:

#include <stdio.h>int add(int x, int y) {return(x + y);}int sub(int x, int y) {return(x - y);}int mul(int x, int y) {return(x * y);}int div(int x, int y) {return(x / y);}int main(void){    int (*pf[4])(int, int) = {add, sub, mul, div};    printf("%d\n", pf[0](9, 3)); /* 12 */    printf("%d\n", pf[1](9, 3)); /* 6  */    printf("%d\n", pf[2](9, 3)); /* 27 */    printf("%d\n", pf[3](9, 3)); /* 3  */        getchar();    return 0;}

3. 用函數指標做參數:

#include <stdio.h>int add(int x, int y) {return(x + y);}int sub(int x, int y) {return(x - y);}int mul(int x, int y) {return(x * y);}int div(int x, int y) {return(x / y);}int math(int(*pfun)(int, int), int x, int y) {    return pfun(x, y);}int main(void){    printf("%d\n", math(add, 9, 3)); /* 12 */    printf("%d\n", math(sub, 9, 3)); /* 6  */    printf("%d\n", math(mul, 9, 3)); /* 27 */    printf("%d\n", math(div, 9, 3)); /* 3  */        getchar();    return 0;}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.