函数名/函数地址/函数指针
| 轉(zhuǎn)自:http://hi.baidu.com/%C6%BF%D6%D0%B5%C4%C5%AE%CE%D7/blog/item/387db9ddaa54d0a9cd1166fa.html 函數(shù)指針:1。指針變量 2。指針變量指向函數(shù) 這正如用指針變量可指向整型變量、字符型、數(shù)組一樣。 在編譯時(shí),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?/span>。 可利用該指針變量調(diào)用函數(shù),就如同用指針變量可引用其他類(lèi)型變量一樣,在這些概念上 一致的。事實(shí)上,每一個(gè)函數(shù),即使它不帶有返回某種類(lèi)型的指針,它本身都有一個(gè)入口 地址,該地址相當(dāng)于函數(shù)名 盡管函數(shù)不是變量,但它在內(nèi)存中仍有其物理地址,該地址能夠賦給指針變量。獲取函數(shù) 方法是:用不帶有括號(hào)和參數(shù)的函數(shù)名得到。 函數(shù)名相當(dāng)于一個(gè)指向其函數(shù)入口指針常量。? 函數(shù)名后面加圓括號(hào),表示函數(shù)調(diào)用 ############################################################## 指針/函數(shù)和函數(shù)/指針的區(qū)別 1,?? 指針函數(shù):指帶指針的函數(shù),即本質(zhì)是一個(gè)函數(shù)。 ??????? 2.?? 指針函數(shù)返回類(lèi)型是某一類(lèi)型的指針。 ############################################################## 函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。函數(shù)指針的說(shuō)明方法為: 數(shù)據(jù)類(lèi)型標(biāo)志符 (指針變量名)(形參列表); 注1:“函數(shù)類(lèi)型”說(shuō)明函數(shù)的返回類(lèi)型,由于“()”的優(yōu)先級(jí)高于“*”,所以指針變量名 外的括號(hào)必不可少,后面的“形參列表”表示指針變量指向的函數(shù)所帶的參數(shù)列表。例 int func(int x); /* 聲明一個(gè)函數(shù) */ int?(*f)?(int x);?/* 聲明一個(gè)函數(shù)指針 */ f=func; /*?將func函數(shù)的首地址賦給指針f?*/ 賦值時(shí)函數(shù)func不帶括號(hào),也不帶參數(shù),func代表函數(shù)的首地址 注2:函數(shù)括號(hào)中的形參可有可無(wú),視情況而定。 下面的程序說(shuō)明了函數(shù)指針調(diào)用函數(shù)的方法: 例一、 #include int max(int x,int y){ return(x>y?x:y); } void main() { int (*ptr)(int, int); int a,b,c; ptr=max; scanf("%d,%d",&a,&b); c=(*ptr)(a,b); printf("a=%d,b=%d,max=%d",a,b,c); } 實(shí)際上ptr和max都指向同一個(gè)入口地址,不同就是ptr是一個(gè)指針變量,不像 函數(shù)名稱那樣是死的,它可以指向任何函數(shù) 注意,指向函數(shù)的指針變量沒(méi)有++和--運(yùn)算 ################################################################################# |
總結(jié)
以上是生活随笔為你收集整理的函数名/函数地址/函数指针的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux字符界面和图形界面
- 下一篇: fork source exec区别差异