国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

指針與函數的關系

2019-11-17 05:29:29
字體:
來源:轉載
供稿:網友

  作者:周靜(四川)

在學習C語言的過程中,學員經常對指針和函數的關系不甚清楚。事實上,C語言中的指針變量可以指向一個函數;函數指針可以作為參數傳遞給其它函數;函數的返回值可以是一個指針值。
   1.指向函數的指針
   函數雖然不是變量,但是它在內存中占有實際位置。函數的首地址就是該函數的入口地址,它可以賦給指針變量,使得指針變量指向函數。利用指向函數的指針變量,可以代替函數名,也可以作為函數的參數傳遞給其它函數。
   函數指針可以用如下形式說明:<類型> (*指針變量名)();
   例如:int (*funcp)();
   表示funcp被定義為指向一個返回值是整型量的函數。
   若函數指針被說明為:float (*funcp)();
   則說明了funcp是一個指向一個返回值是浮點數的函數。
   以上說明中,第一對圓括號是必須要的,假如去掉,如int (*funcp)(),就變成了int *funcp();
   按照運算符的優先級,編譯程序把這個說明解釋為:funcp是一個返回值為指向整型量指針的函數。
   這就與前面的解釋完全不同了。
   2.把指向函數的指針變量作為函數參數
   函數的指針變量作為參數傳遞到其它函數中,是函數指針的重要用途之一,其基本思想是:設有一函數func(p1, p2);有兩個形參p1和p2,它們被說明為指向函數的指針變量。則在調用func()函數時,實在參數用f1和f2兩個函數名給形式參數p1和p2傳遞函數地址,這樣在函數func()中就可以調用函數f1和f2。如
   f1() f2
   { {
   …… ……
   } }
   main()
   {
   ……
   func(f1, f2) /*將兩個函數名f1,f2傳遞給func函數*/
   ……
   }
   func(p1, p2)
   int (*p1)(), (*p2)();
   {
   int a, b, i, j;
   a=(*p1)(i); /*調用函數f1*/
   b=(*p2)(i, j); /*調用函數f2*/
   ……
   }
   其中i和j是函數f1和f2所要求的參數。(*p1)(i)就等價于f1(i),(*p2)(i, j)等價于f2(i, j)。利用這一基本思想,實現了同一段程序調用不同的函數進行操作。
   3.返回值為指針的函數
   函數返回值可以是一個指針。在函數定義時要指明,同樣在調用前也要對其進行說明。定義這種函數如同定義指針一樣,都是通過“*”來表示。一般說明形式為:
  <類型符> *<函數名> (<形參數>)
   (形參數說明部分)
   {
   ……
   }
   需要注重的是,調用返回值是指針的函數之前,先要對其進行說明。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赤城县| 广灵县| 阿城市| 唐海县| 永善县| 彭阳县| 周至县| 静海县| 大荔县| 商洛市| 天峻县| 山东省| 北宁市| 马龙县| 齐齐哈尔市| 会泽县| 富裕县| 永康市| 桑植县| 邢台市| 永登县| 台南市| 尼玛县| 青海省| 门头沟区| 汾阳市| 张家口市| 甘谷县| 马龙县| 当涂县| 阳城县| 甘德县| 永泰县| 宜宾市| 西丰县| 沈丘县| 茶陵县| 南城县| 无为县| 包头市| 玛多县|