C函數(shù)指針學(xué)習(xí)教程_第1頁(yè)
C函數(shù)指針學(xué)習(xí)教程_第2頁(yè)
C函數(shù)指針學(xué)習(xí)教程_第3頁(yè)
C函數(shù)指針學(xué)習(xí)教程_第4頁(yè)
C函數(shù)指針學(xué)習(xí)教程_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——C函數(shù)指針學(xué)習(xí)教程C++函數(shù)指針學(xué)習(xí)教程

每一個(gè)函數(shù)都占用一段內(nèi)存單元,它們有一個(gè)起始地址,指向函數(shù)入口地址的指針?lè)Q為函數(shù)指針。下面是我共享的C++函數(shù)指針學(xué)習(xí)教程,一起來(lái)看一下吧。

語(yǔ)法

數(shù)據(jù)類型*指針變量名參數(shù)表:

int*myFuncdoubleb,intc;

說(shuō)明

函數(shù)指針的定義形式中的數(shù)據(jù)類型是指函數(shù)的返回值的類型。

區(qū)分下面兩個(gè)語(yǔ)句:

int*pinta,intb;//p是一個(gè)指向函數(shù)的指針變量,所指函數(shù)的返回值類型為整型

int*pinta,intb;//p是函數(shù)名,此函數(shù)的返回值類型為整型指針

指向函數(shù)的指針變量不是固定指向哪一個(gè)函數(shù)的,而只是表示定義了一個(gè)這樣類型的變量,它是特意用來(lái)存放函數(shù)的入口地址的';在程序中把哪一個(gè)函數(shù)的地址賦給它,它就指向哪一個(gè)函數(shù)。

在給函數(shù)指針變量賦值時(shí),只需給出函數(shù)名,而不必給出參數(shù)。

如函數(shù)max的原型為:intmaxintx,inty;指針p的定義為:int*pinta,intb;那么p=max;的作用是將函數(shù)max的入口地址賦給指針變量p。這時(shí),p就是指向函數(shù)max的指針變量,也就是p和max都指向函數(shù)的開(kāi)頭。

在一個(gè)程序中,指針變量p可以先后指向不同的函數(shù),但一個(gè)函數(shù)不能賦給一個(gè)不一致的函數(shù)指針(即不能讓一個(gè)函數(shù)指針指向與其類型不一致的函數(shù))。

如有如下的函數(shù):

intfn1intx,inty;intfn2intx;

定義如下的函數(shù)指針:

int*p1inta,intb;int*p2inta;

那么

p1=fn1;//正確

p2=fn2;//正確

p1=fn2;//產(chǎn)生編譯錯(cuò)誤

定義了一個(gè)函數(shù)指針并讓它指向了一個(gè)函數(shù)后,對(duì)函數(shù)的調(diào)用可以通過(guò)函數(shù)名調(diào)用,也可以通過(guò)函數(shù)指針調(diào)用(即用指向函數(shù)的指針變量調(diào)用)。

如語(yǔ)句:c=*pa,b;//表示調(diào)用由p指向的函數(shù)max,實(shí)參為a,b,函數(shù)調(diào)用終止后得到的函數(shù)值賦給c。

函數(shù)指針只能指向函數(shù)的入口處,而不成能指向函數(shù)中間的某一條指令。不能用*p+1來(lái)表示函數(shù)的下一條指令。

函數(shù)指針變量常用的用途之一是把指針作為參數(shù)傳遞到其他函數(shù)。

函數(shù)指針使用舉例

說(shuō)明看代碼解釋就可以

#includeiostream

usingnamespacestd;

classtest

public:

test

coutconstructorendl;

intfun1inta,charc

coutthisisfun1call:acendl;

returna;

voidfun2doubledconst

coutthisisfun2call:dendl;

staticdoublefun3charbuf[]

coutthisisfun3call:bufendl;

return3.14;

;

intmain

//類的靜態(tài)成員函數(shù)指針和c的指針的用法一致

double*pstaticcharbuf[]=NULL;//不需要加類名

pstatic=test::fun3;//可以不加取地址符號(hào)

pstaticmyclaa;

pstatic=test::fun3;

*pstaticxyz;

//普遍成員函數(shù)

inttest::*pfunint,char=NULL;//確定要加類名

pfun=test::fun1;//確定要加取地址符號(hào)

testmytest;

mytest.*pfun1,a;//調(diào)用是確定要加類的對(duì)象名和*符號(hào)

//const函數(shù)(根本普遍成員函數(shù)一致)

voidtest::*pconstdoubleconst=NULL;//確定要加const

pconst=test::fun2;

testmytest2;

mytest2.*pconst3.33;

////構(gòu)造函數(shù)或者析構(gòu)函數(shù)的指針,貌似不成以,不知道c++標(biāo)準(zhǔn)有沒(méi)有規(guī)定不能有指向這兩者的函數(shù)指針

//

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論