在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言中的不完整類型是什么

汽車電子技術 ? 來源: typedef ? 作者:typedef ? 2023-02-21 10:03 ? 次閱讀

前述

C語言中存在這樣一種類型,名叫不完整類型(Incomplete types),雖然我們可能不太理解,或許也沒有仔細研究過,但是在實際的編程中,我們卻已經用到過很多次了。

接下來我們就共同學習一下,內容比較簡單,一看就懂,一學就會。

不完整類型

不完整類型(Incomplete types)是缺少足夠信息來確定該類型對象大小的對象類型,不完整類型可以在翻譯單元的某些點完整。

聽起來可能比較繞口,簡單來說就是,不完整類型是不知道對象所占空間大小,此時是無法使用sizeof()的。但是可以通過后續再補充完整。

不完整類型主要有下面三種。

已聲明但未定義的類類型

內容未知的結構體或聯合體類型。在同一作用域的后面,定義同一結構體或聯合體的內容的聲明能使之完整。

struct node {
  struct node *next; // struct node 在此點不完整
}; // struct node 在此點完整

未知邊界數組

簡單來說就是大小未知的數組,之后指定大小的聲明能使之完整,接下來看一個示例。

#include

extern int a[];  //此時a類型為int []是不完整類型

void fun1() {
  printf("sizeof a = %d\\r\\n", sizeof(a)); // error
  a[0] = 88;  //OK
}

int a[3] = {1,2,3};  //此時a類型為int [3]是完整類型

void fun2() {
  printf("sizeof a = %d\\r\\n", sizeof(a));  //OK
  a[0] = 3;  //OK
}

int main(int argc ,char **argv) {
  fun1();
  fun2();
  return 0;
}

如果在fun1函數中打印數組a的長度編譯時就會報如下錯誤:

invalid application of 'sizeof' to incomplete type 'int[]'

因為此時a為不完整類型,即不知道a的長度,所以無法使用sizeof。

但有的小伙伴卻有疑問了,為什么在fun1函數中卻可以設置a[0]的值?

雖然這里使用了數組a,但是它會被轉換成指向其首元素的指針,而且這個轉換并不需要知道數組的大小。

而且C語言也不會檢查數組是否越界,他選擇相信程序員,把重心放在了程序的執行效率上,這也是為什么C語言執行效率高運行快的原因。

感興趣可以參考:為什么C語言執行效率高,運行快?

其實在外部聲明的時候可以完整聲明,例如上述示例我可以改為:extern int a[3];

此時在編譯程序fun1就不會有編譯報錯提示了。

因為數組元素不能具有未知邊界數組類型,所以多維數組只能在第一個維度中有未知邊界:

extern int a[][2]; // OK:邊界未知的含有【2 個 int 元素的數組】元素的數組
extern int b[2][]; // error:數組有不完整類型

void 類型

可由 CV 限定,有別于其他不完整類型, void 不能補充聲明為完整類型。

總結

不完整類型有三種:

  1. void類型(不能被完整)
  2. 數組長度未知(可被完整)
  3. 已聲明但未定義的類類型(可被完整)

參考鏈接

  • https://en.cppreference.com/w/c/language/type
  • https://en.cppreference.com/w/cpp/language/type

END

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 類型
    +關注

    關注

    0

    文章

    10

    瀏覽量

    10228
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140498
  • 編程
    +關注

    關注

    88

    文章

    3685

    瀏覽量

    94899
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    C語言中的基本數據類型

    C語言是非常重要的一門程序設計語言,學好C語言再去學習其他編程語言將變得很輕松,因為大部分
    發表于 04-26 17:33 ?2312次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>的基本數據<b class='flag-5'>類型</b>

    Go語言中的整數類型

    在 Go 語言中,整型可以細分成兩個種類十個類型
    發表于 07-20 15:25 ?1108次閱讀

    C語言中基本數據類型、變量和常量的使用

    C語言中基本數據類型、變量和常量的使用
    發表于 08-18 16:42 ?3562次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言中</b>基本數據<b class='flag-5'>類型</b>、變量和常量的使用

    ORcad 菜單欄顯示不完整

    如圖片,orcad安裝后 ,菜單欄顯示不完整,怎么設置這個? 用起來 不舒服
    發表于 03-23 21:27

    畫的電路圖輸出不完整,怎么設置?

    電路圖輸出不完整,怎么調,還有藍框的大小能調嗎?
    發表于 06-04 13:54

    BMP解碼顯示圖片不完整

    再次請教原子個你的那個圖片解碼的(BMP部分的)工程已經移植完畢(用的是znFAT32文件系統)但是顯示的圖片不完整(左邊顯示的是圖片的右一半,右邊邊顯示的是圖片的左一半)
    發表于 07-10 04:35

    QT解決串口數據接收不完整問題

    1. 相關文章匯總(1)QT解決串口數據接收不完整問題(貌似貼出的代碼可以存下串口接受的全部數據)(2)qt中使用串口類接收數據不完整 (3)Qt5.7串口接收數據不完整因為串口本來就不是一次接收
    發表于 08-18 06:58

    請問在C語言中如何使用bool類型

    C語言中如何使用bool類型
    發表于 10-22 07:20

    如何解決串口接收數據不完整

    如何解決串口接收數據不完整
    發表于 11-22 07:37

    rt-thread使用ps顯示的線程名字不完整怎么解決?

    使用ps顯示的線程名字不完整
    發表于 05-09 10:04

    不完整地址轉發表的拓撲發現方法

    出的AFT基本推導規則BRR的完備性.此外還對基于不完整AFT進行拓撲發現的NP難問題進行了討論,深入剖析了任意實際的局域網絡的不完整AFT通過BRR推導完成后的各種可能情況,并分析了單純依靠AFT進行拓撲發現的局限性.該工作對于基于AFT進
    發表于 01-12 16:28 ?0次下載
    <b class='flag-5'>不完整</b>地址轉發表的拓撲發現方法

    C語言中隨機數的生成代碼

    C語言中隨機數的生成完整代碼:
    的頭像 發表于 02-20 09:21 ?1.1w次閱讀

    APM32F091RCT6_SPI_從機接收數據不完整

    APM32F091RCT6_SPI_從機接收數據不完整
    發表于 11-09 21:04 ?0次下載
    APM32F091RCT6_SPI_從機接收數據<b class='flag-5'>不完整</b>

    淺談C語言中的三種不完整類型

    不完整類型(Incomplete types)是缺少足夠信息來確定該類型對象大小的對象類型不完整類型
    發表于 12-16 09:52 ?642次閱讀

    如何獲取ChatGPT回答不完整的內容

    ____tz_zs 對于 ChatGPT 回答不完整的情況(篇幅限制,沒有說完),可以輸入“繼續”指令,讓其繼續回答下去,獲得完整內容。 如下圖,發問 “使用web3js 調用 eth鏈智能合約” 直到這里才是獲得了剛剛問題 “使用web3js 調用 eth鏈智能合約”
    發表于 02-10 10:48 ?0次下載
    如何獲取ChatGPT回答<b class='flag-5'>不完整</b>的內容
    主站蜘蛛池模板: 国产色片 | 中文字幕一区二区在线观看 | 日本网络视频www色高清免费 | 很黄很暴力 很污秽的小说 很黄很黄叫声床戏免费视频 | 中文在线三级中文字幕 | 伊人精品视频在线 | 午夜影院404| 男女交性无遮挡免费视频 | 五月天丁香婷婷网 | 大色综合色综合资源站 | 色在线免费观看 | 四虎影院最新网站 | 亚洲第一看片 | 日本一区视频在线播放 | 午夜毛片不卡高清免费 | 91大神精品在线观看 | 欧色美 | 精品你懂的 | 亚欧一区 | 400部大量精品情侣网站 | 18满xo影院视频免费体验区 | 国外精品视频在线观看免费 | 午夜精品在线视频 | 黄色二级视频 | a天堂中文在线 | 中文字幕天天躁夜夜狠狠综合 | 操美女视频网站 | 日韩精品系列产品 | 天天射日日操 | 91桃色国产线观看免费 | 午夜一级精品免费毛片 | 久久男女 | 成人午夜精品久久久久久久小说 | 婷婷丁香五月中文字幕 | 深夜视频免费看 | 国产精品黄网站免费观看 | 欧美日韩性高爱潮视频 | 97国产精品人人爽人人做 | 亚洲成人高清在线 | ts国产 | 日日操天天射 |