日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年07月23日(星期三)

2020年07月23日 | ARM的函數(shù)指針、指針函數(shù)的區(qū)別和用法

發(fā)布者:一直333 來源: elecfans關(guān)鍵字:ARM  函數(shù)指針  指針函數(shù) 手機看文章 掃描二維碼
隨時隨地手機看文章

在學(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ù)。在使用是必要要搞清楚才能正確使用

關(guān)鍵字:ARM  函數(shù)指針  指針函數(shù) 引用地址:ARM的函數(shù)指針、指針函數(shù)的區(qū)別和用法

上一篇:ARM Linux:usr模式轉(zhuǎn)為svc模式的實現(xiàn)原理
下一篇:ARM異常中斷的原因及處理措施

推薦閱讀

屏幕大還能當(dāng)充電寶 小米Max3圖賞1/11查看原圖圖集模式今日小米正式發(fā)布大屏手機小米Max3,這也是Max系列第三款產(chǎn)品。屏幕不僅增大至6.9英寸,小米還為這款手機配置了5500毫安時大電池,可為其他手機或產(chǎn)品充電。拍照方面也在前置拍照增加了補光燈。小米Max3售價1699元起,7月20日早10點首賣?! 〗裉靹倓偘l(fā)布的Max3是小米公司最新的大屏手機,售價1699...
.ObjectsLightOneLed.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o).意思是SystemInit這個函數(shù)未定義(在startup_stm32f10x_hd.o引用)。在外部(其他任何.c文件里面)定義SystemInit這個函數(shù),哪怕是個空函數(shù)也可以。void SystemInit(){ }usermain.c(26): warning: #1-D: last line of file...
7月23日,“聚眾智 惠百業(yè) 創(chuàng)未來”高通公司(Qualcomm) 5G物聯(lián)網(wǎng)生態(tài)合作產(chǎn)業(yè)峰會舉行,為產(chǎn)業(yè)界帶來了一場云端生態(tài)盛宴。高通公司攜手運營商、模組廠商、終端廠商和解決方案商等產(chǎn)業(yè)鏈上下游合作伙伴,共同展示了5G物聯(lián)網(wǎng)最新發(fā)展成果,深入探討5G賦能下的物聯(lián)網(wǎng)創(chuàng)新機遇。在本次峰會上,高通公司還聯(lián)合20余家領(lǐng)軍企業(yè)共同發(fā)起“5G物聯(lián)網(wǎng)創(chuàng)新計劃”,致...
近日,在徐州鑫科機器人有限公司,一款新型特種機器人--無人伴隨運輸機器人,歷時6個月的研發(fā)正式下線,它在柔性行走、自動繞障、室外導(dǎo)航精度上等方面填補了國內(nèi)空白。在測試現(xiàn)場,記者看到,2噸重的無人伴隨運輸機器人仿佛長了雙眼,既可輕盈跟隨,又可識別繞障。徐州鑫科特種機器人有限公司研發(fā)工程師 鄭玉龍:能跨越達到580毫米的跨越寬度,爬坡能爬...

史海拾趣

問答坊 | AI 解惑

PIC系列單片機數(shù)據(jù)存儲器的特點和功能(下)

3   A/D轉(zhuǎn)換寄存器 這里摘錄一段筆者從網(wǎng)上下載的用PIC16F877單片機芯片(帶Flash存儲器的)完成有關(guān)A/D轉(zhuǎn)換的源程序部分指令,并用它說明有關(guān)A/D轉(zhuǎn)換寄存器在指令中的用法。這里先引用部分源程序,源程序中的注釋是筆者按照指令在程序中 ...…

查看全部問答∨

51單片機擴展用并口方式訪問外圍器件的最簡單方法

今天重新溫習(xí)了51單片機擴展RAM、ROM,收獲大大的有,以前把51的一本書看了幾遍,還是沒有弄清楚,沒有弄清楚51訪問外部ram、rom的時序,到今天才發(fā)現(xiàn),訪問外部ram、rom的時序是有訪問指令決定的。       當(dāng)用并行方式 ...…

查看全部問答∨

ActivateService ("...", 0)

我要在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)了一個奇怪的問題:     顏色顯示都基本正確,紅.綠.藍都還可以。 ...…

查看全部問答∨

搞過802.11開發(fā)的兄弟 頂起.

我實驗室現(xiàn)在想搞支持802.11系列的手機終端,我對這個完全不了解,想先學(xué)習(xí)一下..誰有802.11系列協(xié)議的實現(xiàn)代碼的可以共享一下嗎 ,兄弟不勝感激!!!…

查看全部問答∨

smdk6410開發(fā)板屏幕旋轉(zhuǎ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)容一 ...…

查看全部問答∨

ST32PKAVR32,哪個強?

這兩個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ā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved