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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ 中复杂的声明

發布時間:2023/12/13 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 中复杂的声明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、方法也是有類型的,方法的類型由返回類型和形參表決定。比如int F (int)的類型就是去掉方法名,int (int)。

2、對于方法類型,在返回類型和形參表之間,加上一個名稱F,就表示一個特定的方法F。

3、思考,如果我在返回類型和形參表之間,加上一個指針變量呢?

  表示指向這一類方法的指針。即int (*P) (int),需要特別注意的是,必須使用括號把*P括起來。如果沒有括起來,int *P(int),從編譯器的角度理解,就變成了返回int指針的方法聲明。

4、那么接著思考,方法指針也是指針,既然方法能夠返回其他指針,當然也可以返回方法指針。

  方法指針的類型就是去掉指針名稱,int(*)(int)。從人的角度思考,返回方法指針的方法應該是 int(*)(int) H(int)。但是,我們應該從編譯器的角度思考,編譯器首先找到方法名,去掉方法名和形參表,剩下的就是返回類型了。因此,實際的寫法是int (* H(int)) (int)。

  為了便以理解,使用

  typedef int(*PF)(int);

  PF H (int)。

5、接著考慮,方法指針數組的聲明,從人的角度思考,應該是int(*) (int) a[10]; 實際上是 int(* a[10])(int)。

6、接著考慮,指向數組的指針,從人的角度思考,應該是int[10] *p; 實際上是int (*p)[10]。

7、可以認為,編譯器并不是從左到右讀取聲明,而是聲明的對象放在了中間,并用括號括起來,保證優先級最高,去掉名稱,剩下的就是類型。

8、特別注意,復雜的聲明是非常糟糕的編碼風格,嚴重影響代碼的可讀性,應該盡量避免,可以使用typedef。

轉載于:https://www.cnblogs.com/nzbbody/p/3560062.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的C++ 中复杂的声明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。