第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我們應(yīng)該經(jīng)常在C中對結(jié)構(gòu)進(jìn)行類型化呢?

為什么我們應(yīng)該經(jīng)常在C中對結(jié)構(gòu)進(jìn)行類型化呢?

C
守著一只汪 2019-06-15 17:23:08
為什么我們應(yīng)該經(jīng)常在C中對結(jié)構(gòu)進(jìn)行類型化呢?我見過許多由如下結(jié)構(gòu)組成的程序typedef struct {     int i;     char k;} elem;elem user;為什么這么頻繁地需要它?有什么具體原因或適用范圍嗎?
查看完整描述

3 回答

?
揚(yáng)帆大魚

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個贊

正如格雷格·休吉爾所言,“類型胡枝子”意味著你不必再寫文章了。struct到處都是。這不僅可以節(jié)省擊鍵,還可以使代碼更簡潔,因?yàn)樗峁┝烁嗟某橄蟆?/trans>

諸如此類的東西

typedef struct {
  int x, y;} Point;Point point_new(int x, int y){
  Point a;
  a.x = x;
  a.y = y;
  return a;}

當(dāng)你不需要看到到處都是“struct”關(guān)鍵字的時候,你就變得更干凈了,它看起來更像是你的語言中真的有一種叫做“Point”的類型。在那之后typedef,我想是這樣的。

還請注意,雖然您的示例(和我的)省略了命名struct實(shí)際上,當(dāng)您想要提供不透明類型時,實(shí)際上命名它也是有用的。例如,在標(biāo)題中會有這樣的代碼:

typedef struct Point Point;Point * point_new(int x, int y);

然后提供struct實(shí)現(xiàn)文件中的定義:

struct Point{
  int x, y;};Point * point_new(int x, int y){
  Point *p;
  if((p = malloc(sizeof *p)) != NULL)
  {
    p->x = x;
    p->y = y;
  }
  return p;}

在后一種情況下,您不能按值返回Point,因?yàn)樗亩x對頭文件的用戶是隱藏的。這是一種廣泛使用的技術(shù)。GTK+例如。

更新請注意,也有高度重視的C項(xiàng)目,在這些項(xiàng)目中,typedef藏起來struct被認(rèn)為是個壞主意,Linux內(nèi)核可能是最著名的這樣的項(xiàng)目.見第五章Linux內(nèi)核CodingStyle文檔聽萊納斯生氣的話。:我的觀點(diǎn)是,問題中的“應(yīng)”畢竟不是一成不變的。


查看完整回答
反對 回復(fù) 2019-06-15
  • 3 回答
  • 0 關(guān)注
  • 392 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號