日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数和指针

發(fā)布時間:2024/4/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数和指针 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

聲明指向函數(shù)的指針:

void ToUpper (char *); // 把字符串轉(zhuǎn)換為大寫 void (*pf) (char *); // 指向函數(shù)的指針

第一對圓括號將運(yùn)算符*和pf結(jié)合在一起,這意味著pf是一個指向函數(shù)的指針。這就使得(*pf)是一個函數(shù),并使(char *)作為該函數(shù)的參量列表,void作為返回類型。創(chuàng)建這類聲明最簡單的方法是注意它用表達(dá)式(*Pf)代替函數(shù)名ToUpper。

根據(jù)運(yùn)算符優(yōu)先級的規(guī)則,第一個括號是必須的,省略括號會導(dǎo)致完全不同的解釋:

void *pf (char *); // pf是返回一個指針的函數(shù)

?

有了函數(shù)指針后,可以把適當(dāng)類型的函數(shù)的地址賦給它。在這種場合中,函數(shù)名可以用來表示函數(shù)的地址

void ToUpper (char *); void ToLower (char *); int round (double); void (*Pf) (char *); pf = ToUpper; // 合法,ToUpper是函數(shù)ToUpper( )的地址 pf = ToLower; // 合法,ToLower是函數(shù)ToLower( )的地址 // pf = round; // 非法,round是錯誤類型的函數(shù) // pf = ToLower(); // 非法,ToLower()不是地址

?

使用函數(shù)指針來訪問函數(shù)。有兩種邏輯上不一致的語法規(guī)則來實(shí)現(xiàn)這樣的操作:

void ToUpper (char *); void (*pf) (char *); char mis[] = "Nina Metier"; (*pf) (mis); // 語法1 (pf (mis); // 語法2

為了保持與現(xiàn)有代碼的兼容性,ANSI C把兩者作為等價的形式全部接受。

?

函數(shù)指針最普遍的用法之一是作為函數(shù)的參數(shù)。例如:

void show (void (* fp) (char *), char * str) {(*fp) (str); // 把所選函數(shù)作用于str }

?

函數(shù)指針的數(shù)組

可以聲明并初始化函數(shù)指針的數(shù)組:

typedef void (* V_FP_CHARP) (char *); V_FP_CHARP arpf[4] = {ToUpper, ToLower, Transpose, Dummy};

?

注意:存在“函數(shù)指針的數(shù)組”,但不存在“函數(shù)數(shù)組”

?

總結(jié)下使用函數(shù)名的四種方法:

  • 定義函數(shù)
  • 聲明函數(shù)
  • 調(diào)用函數(shù)
  • 作為指針

?

轉(zhuǎn)載于:https://www.cnblogs.com/qwertWZ/archive/2013/01/23/2873785.html

總結(jié)

以上是生活随笔為你收集整理的函数和指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。