在學(xué)習(xí)arm過程中發(fā)現(xiàn)這“指針函數(shù)”與“函數(shù)指針”容易搞錯,所以今天,我自己想一次把它搞清楚,找了一些資料,和大家的一些總結(jié),整理到此。和大家分享。
首先它們之間的定義:
1、指針函數(shù)是指帶指針的函數(shù),即本質(zhì)是一個函數(shù)。函數(shù)返回類型是某一類型的指針
類型標識符 *函數(shù)名(參數(shù)表)
int *f(x,y);
首先它是一個函數(shù),只不過這個函數(shù)的返回值是一個地址值。函數(shù)返回值必須用同類型的指針變量來接受,也就是說,指針函數(shù)一定有函數(shù)返回值,而且,在主調(diào)函數(shù)中,函數(shù)返回值必須賦給同類型的指針變量。
表示:
float *fun();
float *p;
p = fun(a);
注意指針函數(shù)與函數(shù)指針表示方法的不同,千萬不要混淆。最簡單的辨別方式就是看函數(shù)名前面的指針*號有沒有被括號()包含,如果被包含就是函數(shù)指針,反之則是指針函數(shù)。
來講詳細一些吧!請看下面
指針函數(shù):
當(dāng)一個函數(shù)聲明其返回值為一個指針時,實際上就是返回一個地址給調(diào)用函數(shù),以用于需要指針或地址的表達式中。
格式:
類型說明符 * 函數(shù)名(參數(shù))
當(dāng)然了,由于返回的是一個地址,所以類型說明符一般都是int。
例如:int *GetDate();
int * aaa(int,int);
函數(shù)返回的是一個地址值,經(jīng)常使用在返回數(shù)組的某一元素地址上。
int * GetDate(int wk,int dy);
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(%dn,*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];
}
程序應(yīng)該是很好理解的,子函數(shù)返回的是數(shù)組某元素的地址。輸出的是這個地址里的值。
2、函數(shù)指針是指向函數(shù)的指針變量,即本質(zhì)是一個指針變量。
int (*f) (int x); /* 聲明一個函數(shù)指針 */
f=func; /* 將func函數(shù)的首地址賦給指針f */
指向函數(shù)的指針包含了函數(shù)的地址,可以通過它來調(diào)用函數(shù)。聲明格式如下:
類型說明符 (*函數(shù)名)(參數(shù))
其實這里不能稱為函數(shù)名,應(yīng)該叫做指針的變量名。這個特殊的指針指向一個返回整型值的函數(shù)。指針的聲明筆削和它指向函數(shù)的聲明保持一致。
指針名和指針運算符外面的括號改變了默認的運算符優(yōu)先級。如果沒有圓括號,就變成了一個返回整型指針的函數(shù)的原型聲明。
例如:
void (*fptr)();
把函數(shù)的地址賦值給函數(shù)指針,可以采用下面兩種形式:
fptr=&Function;
fptr=Function;
取地址運算符&不是必需的,因為單單一個函數(shù)標識符就標號表示了它的地址,如果是函數(shù)調(diào)用,還必須包含一個圓括號括起來的參數(shù)表。
可以采用如下兩種方式來通過指針調(diào)用函數(shù):
x=(*fptr)();
x=fptr();
第二種格式看上去和函數(shù)調(diào)用無異。但是有些程序員傾向于使用第一種格式,因為它明確指出是通過指針而非函數(shù)名來調(diào)用函數(shù)的。下面舉一個例子:
void (*funcp)();
void FileFunc(),EditFunc();
main()
{
funcp=FileFunc;
(*funcp)();
funcp=EditFunc;
(*funcp)();
}
void FileFunc()
{
printf(FileFuncn);
}
void EditFunc()
{
printf(EditFuncn);
}
程序輸出為:
FileFunc
EditFunc
主要的區(qū)別是一個是指針變量,一個是函數(shù)。在使用是必要要搞清楚才能正確使用
上一篇:ARM Linux:usr模式轉(zhuǎn)為svc模式的實現(xiàn)原理
下一篇:ARM異常中斷的原因及處理措施
推薦閱讀
史海拾趣
在國內(nèi)市場取得一定成績后,CWIND公司開始將目光投向國際市場。公司高層制定了一系列國際化戰(zhàn)略,包括加強與國際知名企業(yè)的合作、參加國際電子展會等。通過與國外企業(yè)的技術(shù)交流與合作,CWIND不僅提升了自身的技術(shù)水平,還成功打入了國際市場。在國際市場上,CWIND憑借其優(yōu)質(zhì)的產(chǎn)品和服務(wù),逐漸贏得了消費者的信任和認可。
面對日益增長的全球市場需求,Holmes Electronics決定實施全球化戰(zhàn)略。他們首先在亞洲建立了生產(chǎn)基地,利用當(dāng)?shù)氐某杀緝?yōu)勢和供應(yīng)鏈資源,大幅提高生產(chǎn)效率并降低成本。隨后,公司又在歐洲和美國設(shè)立了研發(fā)中心和銷售網(wǎng)絡(luò),以更好地服務(wù)當(dāng)?shù)乜蛻舨⒉蹲绞袌鰴C會。這一全球化戰(zhàn)略不僅使Holmes Electronics的產(chǎn)品遍布全球,還增強了公司的市場響應(yīng)能力和品牌影響力。
進入新世紀后,Extech公司迎來了新的發(fā)展機遇。2000年,公司成為國家第一批863/CIMS系統(tǒng)集成和咨詢服務(wù)企業(yè),同時也是國家863/CIMS示范應(yīng)用工程的主流供應(yīng)商。這一榮譽的獲得不僅體現(xiàn)了公司在技術(shù)實力和服務(wù)能力方面的優(yōu)勢,也為公司未來的發(fā)展提供了更廣闊的空間。
隨著公司的發(fā)展壯大,Babcock開始注重品牌建設(shè)和企業(yè)文化建設(shè)。通過加強品牌宣傳和推廣,提升公司的知名度和美譽度;同時,公司還注重培養(yǎng)員工的歸屬感和忠誠度,營造積極向上的工作氛圍。這些舉措不僅提升了公司的軟實力,也為公司的長遠發(fā)展提供了有力保障。
這五個故事展示了Babcock Inc公司在電子行業(yè)中的發(fā)展歷程和取得的成就。通過技術(shù)創(chuàng)新、市場拓展、國際合作以及品牌建設(shè)等方面的努力,Babcock逐漸成為了電子行業(yè)中的佼佼者,為行業(yè)的發(fā)展做出了積極貢獻。
在競爭激烈的電子行業(yè)中,Consolidated Wire公司始終堅持品質(zhì)至上的原則。公司建立了嚴格的質(zhì)量管理體系,從原材料采購到生產(chǎn)過程控制,再到產(chǎn)品出廠檢驗,每一個環(huán)節(jié)都嚴格把關(guān)。這種對品質(zhì)的執(zhí)著追求使得Consolidated Wire公司的產(chǎn)品贏得了客戶的信任和好評。許多知名企業(yè)都成為了公司的合作伙伴,共同推動電子行業(yè)的發(fā)展。
在發(fā)展的過程中,F(xiàn)erroperm公司不斷進行技術(shù)創(chuàng)新和產(chǎn)品研發(fā),推動產(chǎn)品的多樣化發(fā)展。他們成功開發(fā)了一系列具有高性能和獨特功能的電磁材料,如高性能鐵氧體、NdFeB永磁體等。這些產(chǎn)品不僅滿足了客戶對電磁材料性能的高要求,還推動了相關(guān)行業(yè)的發(fā)展。同時,F(xiàn)erroperm還不斷拓展產(chǎn)品線,推出了變壓器、電感器、濾波器等一系列電子產(chǎn)品,進一步鞏固了其在電磁材料領(lǐng)域的領(lǐng)先地位。
PIC系列單片機數(shù)據(jù)存儲器的特點和功能(下) 3 A/D轉(zhuǎn)換寄存器 這里摘錄一段筆者從網(wǎng)上下載的用PIC16F877單片機芯片(帶Flash存儲器的)完成有關(guān)A/D轉(zhuǎn)換的源程序部分指令,并用它說明有關(guān)A/D轉(zhuǎn)換寄存器在指令中的用法。這里先引用部分源程序,源程序中的注釋是筆者按照指令在程序中 ...… 查看全部問答∨ |
今天重新溫習(xí)了51單片機擴展RAM、ROM,收獲大大的有,以前把51的一本書看了幾遍,還是沒有弄清楚,沒有弄清楚51訪問外部ram、rom的時序,到今天才發(fā)現(xiàn),訪問外部ram、rom的時序是有訪問指令決定的。 當(dāng)用并行方式 ...… 查看全部問答∨ |
我要在eVC下寫個應(yīng)用程序, 運行在Wince 5.0系統(tǒng)下, 去調(diào)用一個service, 現(xiàn)在找到一個可用的函數(shù):ActivateService (\"...\", 0)。 不過在eVC下調(diào)用的時候, 編譯器提示error C2065: \'ActivateService\' : undeclared identifier。 ActivateS ...… 查看全部問答∨ |
請教關(guān)于奇晶的2.83寸OLED顯示屏:C0283QGLC-T(采用的是S6E63D6驅(qū)動IC)的驅(qū)動問題----有人做過么? 原來用的三星的LMS283顯示屏,最近停產(chǎn)了,不得不從新找屏做驅(qū)動。 新找來的奇晶的LCD,修改了硬件電路和spi初始化配置,點亮-進入系統(tǒng)都沒有問題,但是象素上 發(fā)現(xiàn)了一個奇怪的問題: 顏色顯示都基本正確,紅.綠.藍都還可以。 ...… 查看全部問答∨ |
我實驗室現(xiàn)在想搞支持802.11系列的手機終端,我對這個完全不了解,想先學(xué)習(xí)一下..誰有802.11系列協(xié)議的實現(xiàn)代碼的可以共享一下嗎 ,兄弟不勝感激!!!… 查看全部問答∨ |
|
我使用的是smdk 6410 三星的開發(fā)板 + wince R2,BSP也是三星直接提供的,現(xiàn)在我要將我的屏幕旋轉(zhuǎn)90,我的做法是 直接修改注冊表的[HKEY_LOCAL_MACHINE\"System\"GDI\"Rotation],修改\"Angle\"=dword:5A, 這樣修改之 ...… 查看全部問答∨ |
求救,各位達人,WinCE6.0如何加載位于BinFS文件系統(tǒng)中類型為NandImage的.bin文件中的內(nèi)容? 我現(xiàn)在做的是BinFS+Multi-bin,目的是加快WINCE6.0的啟動速度,減小內(nèi)存使用。核心的東西都放在XIPKERNEL.bin中,為RAMIMAGE,而其他東西則放在nk.bin中,為NANDIMAGE?,F(xiàn)在的現(xiàn)象是,xipkernel里面的東西好像加載都是正常的,但是nk.bin中的內(nèi)容一 ...… 查看全部問答∨ |
這兩個MCU 俺打算選用其中一種,不過從指令系統(tǒng)上看,好象AVR32 強!ST32 數(shù)據(jù)手冊好象不附指令的執(zhí)行時間?不附指令執(zhí)行時間,是心虛嗎?… 查看全部問答∨ |
關(guān)于uCOS-II的學(xué)習(xí)方法求教 各位前輩們,小生是新來的,我要用STM32f103x的單片機開發(fā)一款用戶圖形界面(GUI),使用uCOS-II操作系統(tǒng)。 現(xiàn)在的情況是,我對STM32f10x單片機倒是用的還行,不過操作系統(tǒng)和GUI開發(fā),真的完全沒有接觸過。 手上有兩塊STM32f10x開發(fā)板:一塊是紅 ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 蜂巢能源2025年試產(chǎn)半固態(tài)電池,2027年大批量供貨
- 激光雷達進化論:RoboSense如何持續(xù)領(lǐng)跑?
- 法雷奧-全景顯示技術(shù) Panovision | 申報2025第七屆金輯獎中國汽車新供應(yīng)鏈百強
- 公安部:目前我國市售汽車搭載的“智駕”系統(tǒng),都不具備“自動駕駛”功能
- 德賽西威-旗艦級AI智能座艙域控制器 | 申報2025第七屆金輯獎中國汽車新供應(yīng)鏈百強
- Mobileye推出駕駛員監(jiān)測系統(tǒng)(DMS)技術(shù) ,實現(xiàn)人與車輛協(xié)同駕駛
- 第三屆安富利汽車生態(tài)圈峰會盛大啟幕,雙城聯(lián)動激發(fā)智慧出行產(chǎn)業(yè)新動能
- Vicor Corporation 2025年第二季度財報:專利訴訟和解推動強勁增長
- 智能底盤2.0競賽,這家外資巨頭按下加速鍵
- GaN技術(shù)如何應(yīng)用到人形機器人執(zhí)行關(guān)節(jié)?
- TI 高精度實驗室信號鏈精品課大作戰(zhàn)——你學(xué)習(xí)我送禮!
- TI 嵌入式處理器最新產(chǎn)品發(fā)布會 全程在線直播 4月16日精彩為您呈現(xiàn)!預(yù)報名、看直播、享好禮
- 【TI 嵌入式研討會集錦】小站添加了很多新內(nèi)容,歡迎提貨!
- 《帶您了解ADI數(shù)字健康生物傳感器系列》有獎直播
- 解鎖【W(wǎng)5500-EVB-Pico】,探秘以太網(wǎng)底層,得捷Follow me第4期來襲!
- 免費下載Vishay最新汽車解決方案
- 答題贏京東卡|《安森美和安富利物聯(lián)網(wǎng)創(chuàng)新設(shè)計大賽作品集》
- 有獎?wù){(diào)查:ST MEMS 傳感器論壇用戶問卷調(diào)查,參與有驚喜
- 答題贏好禮:ADI MEMS工業(yè)監(jiān)測助力機器大健康發(fā)展