亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 函數指針和指針函數

函數指針和指針函數 時間:2018-09-26      來源:未知

在學習arm過程中發現這“指針函數”與“函數指針”容易搞錯,所以今天,為了一次把它搞清楚,我找了一些資料,和大家的一些總結,將部分內容簡單整理到此。和大家分享。

1、指針函數:本質是一個函數。其返回類型是某一類型的指針

類型標識符 *函數名(參數表)

int *f(x,y);

函數返回值必須用同類型的指針變量來接受,也就是說,指針函數一定有函數返回值,而且,在主調函數中,函數返回值必須賦給同類型的指針變量。

代碼示例:

float *fun();

int main()

{

float *p;

p = fun();

}

當一個函數聲明其返回值為一個指針時,實際上就是返回一個地址給調用函數,以用于需要指針或地址的表達式中。當然了,由于返回的是一個地址,所以類型說明符一般都是int。

格式: 類型說明符 * 函數名(參數)

示例: int * GetDate();

int * aaa(int,int);

函數返回的是一個地址值,經常使用在返回數組的某一元素地址上。簡單舉個例子:

int * GetDate(int wk,int dy);

int main()

{

int wk,dy;

do

{

printf(“Enter week(1-3)day(1-4)\n”);

scanf(%d%d,&wk,&dy);

}while(wk<1||wk>3||dy<1||dy>4);

printf(“%d\n”,*GetDate(wk,dy));

}

int * GetDate(int wk,int dy)

{

static int calendar[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,-1}};

return &calendar[wk-1][dy-1];

}

這段代碼的意思是:子函數返回的是數組某元素的地址。輸出的是這個地址里的值。

2、函數指針

函數指針是指向函數的指針變量,即本質是一個指針變量。聲明格式如下:

類型說明符 (*函數名) (參數)

示例: int (*f) (int x); // 聲明一個函數指針

f = func; // 將func函數的首地址賦給指針f

注意指針函數與函數指針表示方法的不同,千萬不要混淆。簡單的辨別方式就是看函數名前面的指針*號有沒有被括號()包含,如果被包含就是函數指針,反之則是指針函數。

指向函數的指針包含了函數的地址,可以通過它來調用函數。其實這里不能稱為函數名,應該叫做指針的變量名。這個特殊的指針指向一個返回整型值的函數。指針的聲明必須和它指向函數的聲明保持一致。指針名和指針運算符外面的括號改變了默認的運算符優先級。如果沒有圓括號,就變成了一個返回整型指針的函數的原型聲明。

例如: void (*fptr)();

把函數的地址賦值給函數指針,可以采用下面兩種形式:

fptr = &Function;

fptr = Function;

取地址運算符&不是必需的,因為單單一個函數標識符就標號表示了它的地址,如果是函數調用,還必須包含一個圓括號括起來的參數表。

可以采用如下兩種方式來通過指針調用函數:

x = (*fptr)();

x = fptr();

第二種格式看上去和函數調用無異。但是有些程序員傾向于使用第一種格式,因為它明確指出是通過指針而非函數名來調用函數的。下面舉一個例子:

void (*funcp)();

void FileFunc(),EditFunc();

int main()

{

funcp = FileFunc;

(*funcp)();

funcp = EditFunc;

(*funcp)();

}

void FileFunc()

{

printf(FileFunc\n);

}

void EditFunc()

{

printf(EditFunc\n);

}

程序輸出為:

FileFunc

EditFunc

后強調一次:

函數指針:意思是指向函數的指針。

指針函數:返回值是指針變量的函數。

一個是指針變量,一個是函數。

在使用時必須要搞清楚才能正確使用。

上一篇:C語言內存分配-通俗理解

下一篇:借助minicom進行嵌入式軟件測試

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 人人射视频| 操操干 | 中文字幕精品一区二区三区视频 | 九草视频在线 | 天天操天天摸天天舔 | 久久久精品在观看999 | 黄色激情视频在线观看 | 九九热九九热 | 日韩午夜在线视频不卡片 | 精品国产免费观看一区高清 | 国产午夜精品久久久久免费视 | 国产精品2020观看久久 | 99精品视频在线在线视频观看 | 午夜大片男女免费观看爽爽爽尤物 | 九九51精品国产免费看 | 国产成人高清亚洲一区久久 | 人人爽在线 | 色婷婷一区二区三区四区成人网 | 日本一区二区三区四区视频 | 精品欧美高清一区二区免费 | 美女黄频a美女大全免费皮 美女黄色三级 | 久久99精品久久久久久综合 | 午夜性色一区二区三区不卡视频 | 欧美成人手机视频免费播放 | 国产亚洲精品xxx | 国产成人手机在线 | 亚洲天堂影院 | 人人舔人人 | 国产免费午夜高清 | 日韩不卡在线观看 | 国产日韩视频一区 | 免费大片黄在线观看 | 草啪啪| 亚洲午夜在线 | 久久这里只有精品任你色 | 视频一区二区三区自拍 | 国产精品黄色片 | 日本又色又激情免费播放器 | 99re热视频这里只精品 | 精品在线一区二区 | 在线观看亚洲天堂 |