在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

淺析typedef函數(shù)指針用法

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

1.簡單的函數(shù)指針的應(yīng)用

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

char (*pFun)(int);

char glFun(int a){ return;}

void main()

{

pFun= glFun;

(*pFun)(2);

}

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

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

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

2.使用typedef更直觀更方便

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

typedef char (*PTRFUN)(int);

PTRFUN pFun;

char glFun(int a){ return;}

void main()

{

pFun= glFun;

(*pFun)(2);

}

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

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

3.例子說明

#include

#include

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

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;

}

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

//返回類型為int的函數(shù)指針。它的作用是根據(jù)操作符返回相應(yīng)函數(shù)的地址

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為函數(shù),它的參數(shù)是 op,

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

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

{

return calc_func(op);

}

//最終用戶直接調(diào)用的函數(shù),該函數(shù)接收兩個int整數(shù),

//和一個算術(shù)運算符,返回兩數(shù)的運算結(jié)果

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, '/'));

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    484

    瀏覽量

    71071
  • typedef
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    9689

原文標(biāo)題:來擼代碼吧-typedef函數(shù)指針用法

文章出處:【微信號:gh_dae0718828df,微信公眾號:gh_dae0718828df】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    C語言typedef與#define的用法和區(qū)別

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

    函數(shù)指針指針函數(shù)的概念

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

    typedef的使用【轉(zhuǎn)】

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

    關(guān)于typedef用法總結(jié)

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

    typedef與define的用法與區(qū)別

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

    關(guān)于C++中函數(shù)指針的使用

    關(guān)于C++中函數(shù)指針的使用(包含對typedef用法的討論) (一)簡單的函數(shù)指針的應(yīng)用。
    發(fā)表于 07-13 03:51

    函數(shù)指針指針函數(shù)定義

    函數(shù)指針指針函數(shù),C語言學(xué)習(xí)中最容易混淆的一些概念,好好學(xué)習(xí)吧
    發(fā)表于 01-11 16:44 ?0次下載

    C語言指針函數(shù)函數(shù)指針詳細介紹

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

    Typedef用法小結(jié)

    非常不錯的文檔有著基本數(shù)據(jù)類型結(jié)構(gòu)體enum與函數(shù)指針等等的Typedef相關(guān)用法.
    發(fā)表于 11-02 11:36 ?19次下載

    c語言函數(shù)指針定義,指針函數(shù)函數(shù)指針的區(qū)別

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

    ARM的函數(shù)指針指針函數(shù)的區(qū)別和用法

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

    理解函數(shù)指針函數(shù)指針數(shù)組、函數(shù)指針數(shù)組的指針

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

    C語言中的typedef用法

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

    函數(shù)指針指針函數(shù)是不是一個東西?

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

    面試常考+1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    在嵌入式開發(fā)領(lǐng)域,函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組是一些非常重要但又容易混淆的概念。理解它
    的頭像 發(fā)表于 08-10 08:11 ?1389次閱讀
    面試常考+1:<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>函數(shù)</b>、數(shù)組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數(shù)組
    主站蜘蛛池模板: 亚洲 欧洲 日产 韩国在线 | 国产情侣真实露脸在线最新 | 奇米狠狠干 | 久久夜色精品国产飘飘 | 中文字幕一区二区三区四区五区 | a资源在线观看 | 美国色综合 | 奇米影视四色7777 | 久久香蕉国产精品一区二区三 | 亚洲天堂手机在线 | 曰本三级香港三级人妇99视频 | 四虎影酷 | 4虎影院最近地址 | 伊人网站在线 | 午夜精品久久久久久久2023 | 模特视频一二三区 | 一级特黄性色生活片一区二区 | 亚洲精品乱码久久久久久蜜桃图片 | 色视频在线观看 | 亚洲高清成人 | 国产高清美女一级a毛片 | 狠狠叉| 国产免费高清福利拍拍拍 | 男人j进入女人j在线视频 | 男女草逼视频 | 男子扒开美女尿口做羞羞的事 | 91精品国产91久久久久青草 | 同性男男肉交短文 | 国产理论在线 | 亚洲黄视频| 国产亚洲精品久久久久久午夜 | 久久久久久全国免费观看 | 亚洲va老文色欧美黄大片人人 | 亚洲最大色网 | 午夜影院黄 | 欧美三级视频在线 | 色综合久久天天综合绕观看 | 一级毛片在线播放 | 欧美性满足hd1819 | 国产最好的精华液网站 | 欧美高清成人 |