色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析typedef函數指針用法

單片機愛好者 ? 2018-11-02 10:38 ? 次閱讀

1.簡單的函數指針的應用

形式1:返回類型(*函數名)(參數表)

char (*pFun)(int);

char glFun(int a){ return;}

void main()

{

pFun= glFun;

(*pFun)(2);

}

第一行定義了一個指針變量pFun。首先我們根據前面提到的“形式1”認識到它是一個指向某種函數的指針,這種函數參數是一個int型,返回值是char類型。只有第一句我們還無法使用這個指針,因為我們還未對它進行賦值。

第二行定義了一個函數glFun()。該函數正好是一個以int為參數返回char的函數。我們要從指針的層次上理解函數——函數的函數名實際上就是一個指針,函數名指向該函數的代碼在內存中的首地址

然后就是main()函數了,它的第一句您應該看得懂了——它將函數glFun的地址賦值給變量pFun。main()函數的第二句中“*pFun”顯然是取pFun所指向地址的內容,當然也就是取出了函數glFun()的內容,然后給定參數為2。

2.使用typedef更直觀更方便

形式1:typedef 返回類型(*新類型)(參數表)

typedef char (*PTRFUN)(int);

PTRFUN pFun;

char glFun(int a){ return;}

void main()

{

pFun= glFun;

(*pFun)(2);

}

typedef的功能是定義新的類型。第一句就是定義了一種PTRFUN的類型,并定義這種類型為指向某種函數的指針,這種函數以一個int為參數并返回char類型。后面就可以像使用int,char一樣使用PTRFUN了。

第二行的代碼便使用這個新類型定義了變量pFun,此時就可以像使用形式1一樣使用這個變量了。

3.例子說明

#include

#include

typedef int (*FP_CALC)(int,int);//定義一個函數指針類型

int add(int a, int b)

{

return a + b;

}

int sub(int a, int b)

{

return a - b;

}

int mul(int a, int b)

{

return a * b;

}

int div(int a, int b)

{

return b ? a/b : -1;

}

//定義一個函數,參數為op,返回一個指針,該指針類型為擁有兩個int參數、

//返回類型為int的函數指針。它的作用是根據操作符返回相應函數的地址

FP_CALC calc_func(char op)

{

switch( op )

{

case '+':

return add;

case '-':

return sub;

case '*':

return mul;

case '/':

return div;

default:

return NULL;

}

return NULL;

}

//s_calc_func為函數,它的參數是 op,

//返回值為一個擁有兩個int參數、返回類型為int的函數指針

int (*s_calc_func(char op)) (int , int)

{

return calc_func(op);

}

//最終用戶直接調用的函數,該函數接收兩個int整數,

//和一個算術運算符,返回兩數的運算結果

int calc(int a, int b, char op)

{

FP_CALC fp = calc_func(op);

int (*s_fp)(int,int) = s_calc_func(op);//用于測試

assert(fp == s_fp);// 可以斷言這兩個是相等的

if(fp)

return fp(a,b);

else

return -1;

}

void main()

{

int a = 100, b = 20;

printf("calc(%d, %d, %c) = %d\n", a, b, '+', calc(a, b, '+'));

printf("calc(%d, %d, %c) = %d\n", a, b, '-', calc(a, b, '-'));

printf("calc(%d,%d, %c) = %d\n", a, b, '*', calc(a, b, '*'));

printf("calc(%d,%d, %c) = %d\n", a, b, '/', calc(a, b, '/'));

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 指針
    +關注

    關注

    1

    文章

    480

    瀏覽量

    70551
  • typedef
    +關注

    關注

    0

    文章

    26

    瀏覽量

    9540

原文標題:來擼代碼吧-typedef函數指針用法

文章出處:【微信號:gh_dae0718828df,微信公眾號:gh_dae0718828df】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言typedef與#define的用法和區別

    在C語言編程中,typedef 和 #define是最常用語句,可能很多工作過幾年的工程師都沒有去深究過它們的一些用法和區別。
    發表于 10-12 10:39 ?679次閱讀

    函數指針指針函數的概念

    不少朋友會混淆“函數指針”和“指針函數”這兩個概念,本文詳細介紹一下。
    發表于 03-09 10:49 ?1198次閱讀

    typedef的使用【轉】

    的文本替換。用法一:typedef int (*MYFUN)(int, int); 這種用法一般用在給函數定義別名的時候上面的例子定義MYFUN 是一個
    發表于 07-27 11:06

    關于typedef用法總結

    則可行:typedef char* PCHAR;PCHAR pa, pb;這種用法很有用,特別是char* pa, pb的定義,初學者往往認為是定義了兩個字符型指針,其實不是,而用typede
    發表于 09-25 09:11

    typedef與define的用法與區別

    typedef與define在一些用法上有一些相似之處,所以對于這方面接觸不多的朋友可能會有所混淆,下面分享一個圖,很清晰地對兩者的用法作了區分。
    發表于 08-10 13:50

    關于C++中函數指針的使用

    關于C++中函數指針的使用(包含對typedef用法的討論) (一)簡單的函數指針的應用。
    發表于 07-13 03:51

    函數指針指針函數定義

    函數指針指針函數,C語言學習中最容易混淆的一些概念,好好學習吧
    發表于 01-11 16:44 ?0次下載

    C語言指針函數函數指針詳細介紹

    C語言指針函數函數指針詳細介紹。。。。。。。
    發表于 03-04 15:27 ?5次下載

    Typedef用法小結

    非常不錯的文檔有著基本數據類型結構體enum與函數指針等等的Typedef相關用法.
    發表于 11-02 11:36 ?19次下載

    c語言函數指針定義,指針函數函數指針的區別

     往往,我們一提到指針函數函數指針的時候,就有很多人弄不懂。下面就由小編詳細為大家介紹C語言中函數指針
    發表于 11-16 15:18 ?3624次閱讀

    ARM的函數指針指針函數的區別和用法

    在學習arm過程中發現這“指針函數”與“函數指針”容易搞錯,所以今天,我自己想一次把它搞清楚,找了一些資料,和大家的一些總結,整理到此。和大家分享。
    的頭像 發表于 06-20 10:08 ?3503次閱讀

    理解函數指針函數指針數組、函數指針數組的指針

    理解函數指針函數指針數組、函數指針數組的指針
    的頭像 發表于 06-29 15:38 ?1.5w次閱讀
    理解<b class='flag-5'>函數</b><b class='flag-5'>指針</b>、<b class='flag-5'>函數</b><b class='flag-5'>指針</b>數組、<b class='flag-5'>函數</b><b class='flag-5'>指針</b>數組的<b class='flag-5'>指針</b>

    C語言中的typedef用法

    見到了typedef一些奇怪的用法,比如typedef char ARR[10]這一類的用法,這時候一些人就會變成表情包了。究其原因是對typede
    發表于 01-13 13:36 ?0次下載
    C語言中的<b class='flag-5'>typedef</b>的<b class='flag-5'>用法</b>

    函數指針指針函數是不是一個東西?

    函數指針的本質是指針,就跟整型指針、字符指針一樣,函數指針
    的頭像 發表于 01-03 16:35 ?526次閱讀
    <b class='flag-5'>函數</b><b class='flag-5'>指針</b>和<b class='flag-5'>指針</b><b class='flag-5'>函數</b>是不是一個東西?

    面試常考+1:函數指針指針函數、數組指針指針數組

    在嵌入式開發領域,函數指針指針函數、數組指針指針數組是一些非常重要但又容易混淆的概念。理解它
    的頭像 發表于 08-10 08:11 ?830次閱讀
    面試常考+1:<b class='flag-5'>函數</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>函數</b>、數組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數組
    主站蜘蛛池模板: 一本到2019线观看| 欧美日韩一二区旡码高清在线| 在线视频a| 欧美亚洲综合另类无码| 国产成久久免费精品AV片天堂| 亚洲AV美女成人网站P站| 久久高清一级毛片| 97精品国产亚洲AV超碰| 日韩精品亚洲专区在线电影不卡 | 怪物高h粗暴无尽| 亚洲bt区| 麻1豆传媒2021精品| 高清不卡伦理电影在线观看| 亚洲精品一二三| 男人电影天堂手机| 国产精品色欲AV亚洲三区软件| 一线高清视频在线播放| 青柠电影高清在线观看| 国产野外无码理论片在线观看| 主播蜜汁丝袜精品自拍| 色欲狠狠躁天天躁无码中文字幕| 精品人妻伦一二三区久久AAA片| 9国产露脸精品国产麻豆| 校园纯肉H教室第一次| 乱VODAFONEWIFI熟妇| 国产69精品久久久久乱码韩国| 一攻多受h嗯啊巨肉bl巨污| 日本高清色片| 精品午夜视频| 成人中文字幕在线观看| 亚洲一级电影| 日本久久精品毛片一区随边看| 极品少妇高潮啪啪AV无码吴梦梦| china年轻小帅脸直播飞机| 亚洲国产在线综合018| 秋霞三级理伦免费观看| 精品AV无码一二三区视频| 超碰人人草在线视频| 伊人久久综合热青草| 失禁h啪肉尿出来高h| 老师紧窄粉嫩|