麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

理解函數聲明

2019-11-11 05:08:12
字體:
來源:轉載
供稿:網友
本文內容來自對《C陷阱與缺陷》第2.1節(jié)的理解,并沿用了此章節(jié)的題目。對于程序員來說,理解下面這樣的聲明是件讓人頭疼的事:(*(void(*)())0)();想要理解上述聲明的含義需明白一條原則:按照使用的方式來聲明。首先要理解C變量聲明的含義,例如float f,g;上面的聲明由類型float 和聲明符f和g組成,意思為對f和g求值時將返回一個float類型的結果。同理,聲明 float ff()的意義為對ff()求值將得到一個float類型的結果,即ff為一個返回值為float類型數據的函數。同理,聲明 float *pf的意義為對*pf求值將得到一個float類型的結果,即fp為只想float類型的數據的指針。同理,聲明 float *g()的意義為對*g()求值將得到一個float類型的結果,即g()將返回一個float類型的指針,即g為一個返回值為float類型指針的函數。同理,聲明 float (*h)()的意義為對(*h)()求值將得到一個float類型的結果,即h是一個函數指針,所指向的函數的返回值類型為float。其次,要知道如何定義輕質類型轉換符:把聲明中的變量名和生命末尾的分號去掉,同時將剩余的部分用一個大括號括起來就行了(高,實在是高啊)。例如,float (*h)()為指向返回值為float類型的函數的指針,而(float (*)())就是指向返回值為float類型的函數的指針的強制類型轉換符了。現在來分析下(*(void(*)())0)()的含義。(void(*)())當然是void(*h)()的強制類型轉換符,那么,(void(*)())就是將0轉換為一個函數指針,這個函數指針存儲的地址為0,那么(*(void(*)())0)()就是調用地址為0處的函數。哈哈,一切是那么自然而然。當然,若用typedef來定義函數指針類型將帶來更加直觀的感受。typedef void (*funcptr)();(*(funcptr)0)();
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产三级国产精品国产普男人 | av在线免费观看中文字幕 | 久久9久久| 日韩视频在线一区二区三区 | 亚洲午夜在线 | 九七在线视频 | 黄色小视频免费在线观看 | 欧美日韩在线免费观看 | 亚洲日韩精品欧美一区二区 | 日韩电影一区二区三区 | 亚洲精品一区中文字幕 | 精品国产一区二区三区四区在线 | 看免费5xxaaa毛片 | 香蕉久久久久 | 午夜精品久久久久久久爽 | 香蕉秀 | 精品国产一区二区三区四区阿崩 | 亚洲网站免费看 | 嗯哈~不行好大h双性 | 污视频在线免费播放 | 爱看久久 | 免费看污视频在线观看 | 特片网久久 | 热@国产 | 精国产品一区二区三区 | 亚洲自拍第一 | 中文字幕亚洲情99在线 | 免费国产自久久久久三四区久久 | 一级黄色毛片播放 | 国产亚洲精品久久久闺蜜 | 国产porn在线 | 成人男女激情免费视频 | 91精品国产一区二区在线观看 | 成人午夜一区二区 | 一级黄色在线免费观看 | 在线男人天堂 | 国人精品视频在线观看 | 深夜毛片免费看 | 成年免费网站 | 色屁屁xxxxⅹ在线视频 | 国产正在播放 |