亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言中函數(shù)與指針的應(yīng)用總結(jié)

2020-02-24 14:34:08
字體:
供稿:網(wǎng)友

閑著也是閑著,今天武林技術(shù)頻道的小編就給小伙伴們帶來C語言函數(shù)指針的應(yīng)用總結(jié),指針的使用是C語言程序設(shè)計中一個重要的特色,從指針的定義和指針的類型等方面對C語言指針的概念進行了簡單的分析,一起來往下了解吧。

1. 首先,在C語言中函數(shù)是一種function-to-pointer的方式,即對于一個函數(shù),會將其自動轉(zhuǎn)換成指針的類型.

復(fù)制代碼 代碼如下:

#include

void fun()
{
}

int main(void)
{
printf("%p %p %p/n", &fun, fun, *fun);
return 0;
}


-------------------------------------------------------------------------------------------

這三個值的結(jié)果是一樣的. 其實對于最后的那個*fun, 即使前面加上很多個*號, 其結(jié)果也不變, 即**fun, ***fun的結(jié)果都是一樣的.
對于這個問題, 因為之前講過函數(shù)是一種function-to-pointer方式, 其會自動轉(zhuǎn)換成指針的類型, &fun是該函數(shù)的地址, 為指針類型, fun是一個函數(shù), 會轉(zhuǎn)換成其指針類型, 而對于*fun, 由于fun已經(jīng)變成了指針類型, 指向這個函數(shù), 所以*fun就是取這個地址的函數(shù), 而又根據(jù)function-to-pointer, 該函數(shù)也轉(zhuǎn)變成了一個指針, 所以以此類推, 這三個值的結(jié)果是相同的.

===================================================
2. 如何調(diào)用一個地址上的函數(shù)
如果知道了一個函數(shù)所在的地址, 可以將其強制轉(zhuǎn)化成某一種類型的函數(shù)指針, 然后再根據(jù)這個指針去調(diào)用這個地址的函數(shù). 如:

復(fù)制代碼 代碼如下:

#include

void f(int i)
{
printf("i = %d/n", i);
}

int main(void)
{
unsigned long add;
add = (unsigned long)f;
((void (*)(int))add)(10);
(*(void (*)(int))add)(20);
return 0;
}


---------------------------------------------------------------------------------------
使用(void (*)(int))的方式可以將一個地址轉(zhuǎn)換成一個帶int參數(shù)且沒有返回值的函數(shù)的指針類型, 然后再去調(diào)用, 由于第1點中講的function-to-pointer, 所以最后兩條語句中加與不加那個*號效果都是一樣的. 在嵌入式方面經(jīng)常用到這種方式.
=====================================================

3. 函數(shù)指針數(shù)組的用法.
有時候需要定義一個數(shù)組, 其內(nèi)容為一系列的函數(shù)指針, 然后對其進行調(diào)用, 如:

復(fù)制代碼 代碼如下:


#include
int max(int v1, int v2)
{
return (v1 > v2 ? v1 : v2);
}

int min(int v1, int v2)
{
return (v1 < v2 ? v1 : v2);
}

int sum(int v1, int v2)
{
return (v1 + v2);
}

復(fù)制代碼 代碼如下:


int main(void)
{
int (*p[3])(int, int);
p[0] = max;
p[1] = min;
p[2] = sum;

printf("p[0] = %d/n", (p[0])(3, 5));
printf("p[1] = %d/n", (p[1])(4, 6));
printf("p[2] = %d/n", (p[2])(1, 2));
return 0;
}


-----------------------------------------------------------------------------------------
雖然感覺這種方法有點累贅, 但是也算是一種使用的方式, 所以介紹一下.
============================================

4.返回一個指向數(shù)組的指針的方式

可以讓函數(shù)返回一個指向數(shù)組的一個指針, 如:

復(fù)制代碼 代碼如下:

#include
#include
int (*p())[10]
{
int (*m)[10];
int i;
m = (int (*)[10])malloc(10 * sizeof(int));
if (m == NULL) {
printf("malloc error/n");
exit(1);
}
for (i = 0; i < 10; i++)
*(*m+i) = i+1;

return m;
}

復(fù)制代碼 代碼如下:


int main(void)
{
int (*a)[10];
int i;
a = p();
for (i = 0; i < 10; i++)
printf("%d ", *(*a+i));
printf("/ndone/n");

return 0;
}


-------------------------------------------------------------------
這種方式中,int (*a)[10]是一個指向一維數(shù)組的一個指針, 而p()也是返回一個指向一維數(shù)組的一個指針.
===================================================

5.返回一個函數(shù)指針的指針

/============================================/
/ 在看到快速排序的例子中使用到返回指針的函數(shù).所以特此查找到這篇文章,覺得很好... /
/============================================/

對這個問題, signal()函數(shù)是最好的例子.
void (*signal (int signo, void (*func)(int)))(int);
很多朋友剛開始看這個函數(shù)定義的時候是不太懂, 其實可以一步一步地慢慢看, 我以前是這樣分析的, 希望能對大家有用.
int (*p)();
這是一個函數(shù)指針, p所指向的函數(shù)是一個不帶任何參數(shù), 并且返回值為int的一個函數(shù).
int (*fun())();
這個式子與上面式子的區(qū)別在于用fun()代替了p,而fun()是一個函數(shù),所以說就可以看成是fun()這個函數(shù)執(zhí)行之后,它的返回值是一個函數(shù)指針,這個函數(shù)指針(其實就是上面的p)所指向的函數(shù)是一個不帶任何參數(shù),并且返回值為int的一個函數(shù).

所以說signal()可以看成是signal()函數(shù)(它自己是帶兩個參數(shù),一個為整型,一個為函數(shù)指針的函數(shù)), 而這個signal()函數(shù)的返回值也為一個函數(shù)指針,這個函數(shù)指針指向一個帶一個整型參數(shù),并且返回值為void的一個函數(shù).

=================================
signal函數(shù)返回的其實是指向以前的信號處理程序的指針, 所以舉一個例子來說明返回指向函數(shù)的指針的用法.

復(fù)制代碼 代碼如下:

#include
#include
#include

void sig_fun2(int signo)
{
printf("in sig_fun2:%d/n", signo);
}

void sig_fun1(int signo)
{
printf("in sig_fun1:%d/n", signo);
}

int main(void)
{
unsigned long i;
if (signal(SIGUSR1, sig_fun1) == SIG_ERR) {
printf("signal fun1 error/n");
exit(1);
}

(signal(SIGUSR1, sig_fun2))(30);

printf("done/n");
return 0;
}


====================================================
6. 使用函數(shù)指針作為參數(shù)的情況 (以前的記錄提到過.)
在函數(shù)的參數(shù)中, 可能會帶有一個函數(shù)指針, 這在signal()函數(shù)中是出現(xiàn)了的.
其實在很多排序函數(shù)中就是使用的這個參數(shù)為函數(shù)指針的方式來進行調(diào)用的.比如Quicksort

例如:

復(fù)制代碼 代碼如下:

#include

int max(int v1, int v2)
{
return (v1 > v2 ? v1 : v2);
}

int min(int v1, int v2)
{
return (v1 < v2 ? v1 : v2);
}

int sum(int v1, int v2)
{
return (v1 + v2);
}

int fun(int a, int b, int (*call)(int, int))
{
return (call(a, b));
}

int main(void)
{
printf("max=%d/n", fun(1, 2, max));
printf("min=%d/n", fun(3, 4, min));
printf("sum=%d/n", fun(5, 6, sum));
return 0;
}

以上就是武林技術(shù)小編分享的C語言中函數(shù)與指針的應(yīng)用總結(jié),希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

国产日韩精品一区二区三区在线| 免费观看成人毛片| 法国伦理少妇愉情| 日韩精品中文字幕久久臀| 成人福利网址| 黄色av网站在线免费观看| 国产欧美一区二区三区精品观看| 成人高清电影网站| 欧美精品久久久久久久| 亚洲国产一区二区三区| 欧美极品美女电影一区| 国产97在线|日韩| 国产婷婷色一区二区三区| 精品奇米国产一区二区三区| 亚洲国产毛片完整版| 国内精品视频一区| 2020国产在线| 国产aⅴ激情无码久久久无码| 国产精品亲子乱子伦xxxx裸| 亚洲国产精品久久久久久6q| 国产在线播放精品| 成人免费视频国产免费观看| 亚洲国产一区二区三区在线播| 久久久国产综合精品女国产盗摄| 亚洲社区在线| 欧美日韩精品综合| jlzzjlzz亚洲女人18| 最新亚洲精品| 精品视频第一页| 91av手机在线| 日本黄色激情视频| 中文字幕视频网站| 日韩字幕在线观看| 欧美精品国产一区二区| 久久久久人妻一区精品色| 亚洲影院理伦片| 国产精品高潮呻吟视频| 97精品视频在线| 国产精品自在线| 欧美中文一区二区| 99久久精品免费看国产四区| 欧美日韩国产欧美日美国产精品| 亚洲欧美激情网| 国产成人一区二区三区免费看| 精品人妻少妇一区二区| 综合一区av| 久操免费在线| 精品黄色一级片| 欧美国产日韩xxxxx| 色天下一区二区三区| 美女视频黄久久| 欧美xfplay| 国产精品天干天干在线综合| 亚洲精品97久久久babes| 日韩成人免费观看| 欧美一区二视频在线免费观看| 欧美精品一级| 成人a在线视频| www.五月天激情| 亚洲国产精品毛片| 精品sm捆绑视频| 欧美大片在线免费观看| 亚洲成人福利片| 天堂va蜜桃一区二区三区漫画版| 色嗨嗨av一区二区三区| 精品99在线观看| 日韩欧美亚洲视频| 天天干天天做天天操| xxxx黄色| 黄网在线免费| av免费在线一区| 在线免费观看黄色小视频| 2021狠狠干| 激情视频在线观看免费| 国产精品51麻豆cm传媒| 中文字幕日韩免费| 国产亚洲精品美女| 亚洲自拍偷拍网址| av免费在线一区二区三区| 欧美wwwsss9999| 国产成人综合在线观看| 本田岬高潮一区二区三区| 欧美做受高潮6| 涩涩视频在线| 右手影院亚洲欧美| 中文在线天堂网www| 国产精品2018| 91九色在线观看视频| 中文字幕一区二区三区手机版| 成人午夜免费在线| 精品国产成人在线| 国产精品666| av免费在线免费观看| 成人在线视频免费看| 日韩影视一区二区三区| 国产精品成人免费一区二区视频| 国产精品久久久一本精品| 欧美一级日韩免费不卡| 香蕉成人av| 一区二区三区中文字幕在线观看| 亚洲精品国产成人| 亚洲的天堂在线中文字幕| www精品国产| 亚洲欧美日韩在线不卡| 国产视频一区三区| 顶级欧美妇高清xxxxx| 欧美视频免费看欧美视频| 香蕉视频网站在线观看| 91看片破解版| 国产肥白大熟妇bbbb视频| 4438全国亚洲精品观看视频| 毛片手机在线观看| 欧美成人资源| 国模冰冰炮一区二区| 国产欧美日韩另类视频免费观看| 国产乱叫456| 中文字幕精品久久| 91精品蜜臀一区二区三区在线| 亚洲自拍与偷拍| 国产精品pans私拍| 欧美成人网在线| 亚色视频在线播放| 日韩一区三区| 国产美女免费网站| 欧美无毛视频| 欧美久久一区二区| 久久91亚洲精品中文字幕奶水| 在线亚洲伦理| 欧美成人国产一区二区| 亚洲xxx在线| 8x8x拔插拔插影库永久免费| 亚洲精品中文字幕乱码三区不卡| 91禁外国网站| 国产精品毛片久久久久久久av| 亚洲一区二区三区四区中文字幕| 日本熟女一区二区| 天堂av在线网站| 亚洲小说区图片| 久久偷看各类wc女厕嘘嘘偷窃| 成人爱爱电影网址| 一区二区高清视频| 99热在线观看精品| 亚洲一级av毛片| 午夜精品久久久久99蜜桃最新版| 精品国产一区探花在线观看| 思思久久99热只有频精品66| 精品国产免费观看一区| 97精品久久久午夜一区二区三区| 成人在线播放网址| 国产电影一区二区三区爱妃记| 91成人观看| 精品成人一区二区| 无码精品国产一区二区三区免费| 亚洲欧美久久久久一区二区三区| 国产字幕视频一区二区| 成人啪啪免费看| 国产精品久久久久久久蜜臀| 久久一留热品黄| 久久九九99| 国产精品一区二区电影| 亚洲av无码一区二区三区观看| 国产美女视频一区二区三区| 国产99久久久久久免费看| 欧美日韩免费不卡视频一区二区三区| 日日摸夜夜爽人人添av| www.综合色| 狠狠操精品视频| 色777狠狠综合秋免鲁丝| 西西人体44www大胆无码| 黄色免费视频在线观看| 综合分类小说区另类春色亚洲小说欧美| 7色.com| 99国产精品| 国产精品乱码一区二区三区软件| 我要色综合中文字幕| 日本在线аv| 精品久久蜜桃| 亚洲欧美日本一区二区| 超碰在线公开| 玖玖爱这里只有精品| 精品久久视频| 亚洲欧洲一区二区在线播放| 亚洲老司机网| 日韩成人午夜影院| 国精产品一区二区| 男人网站视频| 玖玖爱在线精品视频| 久久狠狠亚洲综合| 亚洲欧美国产日韩综合| 国产一区二区片| 在线观看av每日更新免费| 91色在线观看| 女生裸体视频网站免费观看| 日韩中文字幕在线观看视频| 五月激情婷婷网| 久久久久久久久久毛片| 亚洲精品中文字幕无码蜜桃| 日韩欧美中文字幕制服| 色综合亚洲图丝熟| 一色屋成人免费精品网| 欧美丝袜丝交足nylons172| 欧美伊人影院| 国产视频丨精品|在线观看| 亚洲欧洲日本精品| 精品亚洲国产成av人片传媒| 欧美性高跟鞋xxxxhd| 不卡一卡2卡3卡4卡精品在| 九九热精品视频在线播放| 麻豆视频免费在线观看| 最新国产精品视频| 粉嫩av一区| 亚洲一区二区在线免费观看视频| 免费h视频在线观看| 国产精品视频一区二区三区四蜜臂| 午夜福利123| 亚洲免费福利| 亚洲人成电影院色| 99久久精品日本一区二区免费| 91精品视频在线看| 国产日韩视频一区二区三区| 国产黄色av片| 18视频在线观看| 嫩草香蕉在线91一二三区| 少妇与大狼拘作爱性a| 精品视频1区2区3区| 美女扒开腿让男人桶爽久久软| 天天做天天摸天天爽天天爱| 国产精品日韩欧美一区二区三区| 少妇一级淫片免费放播放| 毛片视频免费观看| 欧美日韩免费观看一区二区三区| 一区二区在线| 国产福利在线播放| 日韩在线免费高清视频| 日韩日本欧美亚洲| 精品亚洲乱码一区二区| 久久韩剧网电视剧| 精品国产视频一区二区三区| 5g影院5g天天爽永久免费影院| 精品乱子伦一区二区三区| 理论片日本一区| 一区二区在线观看视频在线| 久久―日本道色综合久久| 性插视频在线观看| 日韩一二在线观看| 国产免费一区二区三区网站免费| 亚洲国产精品va| 粉嫩av一区二区三区| 国产精品视频一区二区三区经| 黑森林国产精品av| 久久精品国产一区| 色狠狠久久av综合| 国产精品一区久久| 97免费视频观看| 日韩视频免费观看高清在线视频| 日韩pacopacomama| 亚洲精品国产嫩草在线观看| 狠狠色狠狠色综合日日tαg| 久久亚洲国产成人精品性色| 大香伊人中文字幕精品| 国产精品无码永久免费不卡| 任你操视频在线观看| 国产精品久久久久一区| 少妇人妻偷人精品一区二区| 久久久久免费网站| 成人午夜私人影院| 亚洲欧美久久婷婷爱综合一区天堂| 国产三级在线免费观看| 日韩一级性生活片| 和岳每晚弄的高潮嗷嗷叫视频| 亚洲午夜久久久久久久久红桃| 黄色一级大片在线免费观看| 国产亚洲网站| 国产精品久久久久久久久久久久久久| 91精品国产一区二区三密臀| 久久精品电影一区二区| 成人黄色网址| 国产黄色片免费在线观看| 国产成人一区二区三区影院在线| av中文字幕第一页| 欧美美女在线直播| 欧美69xxxx| 亚洲成a人片在线观看中文| 超碰在线资源| 久久精品波多野结衣| 欧美精品videosex牲欧美| 国产男女无遮挡| 亚洲香蕉成视频在线观看| 秋霞影院一区| 99在线首页视频| 天天av天天翘天天综合网色鬼国产| 久久午夜免费电影| 亚洲图色在线| 成人激情电影在线| 樱桃视频成人在线观看| 国产日韩亚洲欧美在线| 一区二区蜜桃| 中文字幕有码在线视频| 亚洲精品一区在线观看| 艳妇乳肉豪妇荡乳xxx| 欧美猛男男办公室激情| 国产精品一二三在线观看| 极品日韩av| 亚洲久久久久| 国产aⅴ精品一区二区四区| 三区四区在线观看| 91精品丝袜国产高跟在线| 波多野结衣一区| 国产成人av一区| 婷婷无套内射影院| 4k岛国日韩精品**专区| 全部a∨一极品视觉盛宴| 国产精品亚洲欧美导航| 国产日韩精品视频| 国产精品午夜国产小视频| 韩国中文免费在线视频| 婷婷丁香综合网| 欧洲一区二区三区在线| 春暖花开成人亚洲区| 国产精品久久久精品a级小说| 日韩福利一区二区| 国产调教视频一区| 久久精品国产理论片免费| 亚洲色图影院| 老司机性视频| 欧美日韩国产丝袜美女| 精品无码av一区二区三区| 性生生活大片免费看视频|