国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入分析C/C++ 結(jié)構(gòu)體定義及應(yīng)用

Q4MP_gh_c472c21 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 作者:FightingBoom ? 2021-06-28 15:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 結(jié)構(gòu)聲明結(jié)構(gòu)聲明描述了一個(gè)結(jié)構(gòu)的組織布局。舉例如下:

struct tempA

{

char cvariableA; // char 類型的變量 cvariableA

int ivariableB; // int 類型的變量 ivariableB

float fvariableC; // float 類型的變量 fvariableC

char carrayA; // char 類型的數(shù)組 carrayA

};

下邊依次對(duì)此結(jié)構(gòu)進(jìn)行解析:

1、struct

struct 是一個(gè)關(guān)鍵字,表明跟在其后的是一個(gè)結(jié)構(gòu);

2、tempA

tempA 是一個(gè) 可選的標(biāo)記 ,但是在上述例子中,不能去掉,否則該結(jié)構(gòu)沒(méi)有作用的 “對(duì)象” ,不過(guò)可寫成如下樣式:

struct

{

char cvariableA; // char 類型的變量 cvariableA

int ivariableB; // int 類型的變量 ivariableB

float fvariableC; // float 類型的變量 fvariableC

char carrayA; // char 類型的數(shù)組 carrayA

}tempB;

tempA 這個(gè)標(biāo)記,寫與不寫,主要有以下區(qū)別:

1、寫了此標(biāo)記,則可以在后續(xù)程序中使用此標(biāo)記來(lái)引用該結(jié)構(gòu);

struct tempA book; // C 寫法// C++允許在聲明結(jié)構(gòu)變量時(shí),省略關(guān)鍵字struct

tempA book; // C++ 寫法

2、如果不寫此標(biāo)記,則只引用該結(jié)構(gòu)定義了一個(gè)變量,也就是一次性的,如果需要定義另外一個(gè)擁有相同元素的結(jié)構(gòu)體變量,必須要全部重新再寫一遍,不能直接引用 tempB 。

2 定義結(jié)構(gòu)變量結(jié)構(gòu)有兩層含義,一層是 “結(jié)構(gòu)布局” ,就是上邊的結(jié)構(gòu)聲明。結(jié)構(gòu)布局告訴編譯器如何表示數(shù)據(jù),但是它并未讓編譯器為數(shù)據(jù)分配空間(待確認(rèn),看參考的經(jīng)驗(yàn),利用 sizeof 還是有空間的)。

下一步是創(chuàng)建一個(gè)結(jié)構(gòu)變量, 即是結(jié)構(gòu)的另外一層含義,前邊也有提到過(guò),程序中實(shí)現(xiàn)如下:

struct tempA book; // C 寫法

tempA book; // C++ 寫法

但是如果打算多次使用此結(jié)構(gòu),就要使用帶標(biāo)記的形式,也就是必須要寫 tempA ;或使用 typedef ,下邊將講一下 typedef 的用法。

3 typedef個(gè)人建議使用 typedef 時(shí),把標(biāo)記也寫上,這樣在 C 中,可以使用 typedef 定義的類型(tempB),在 C++ 中可以直接使用標(biāo)記(tempA)。兩個(gè)名字應(yīng)該是不能一樣的。

typedef struct tempA

{

char cvariableA; // char 類型的變量 cvariableA

int ivariableB; // int 類型的變量 ivariableB

float fvariableC; // float 類型的變量 fvariableC

char carrayA; // char 類型的數(shù)組 carrayA

}tempB;

使用 typedef 的好處有如下兩點(diǎn):

1、為經(jīng)常出現(xiàn)的類型創(chuàng)建一個(gè)方便,易識(shí)別的類型名。

2、typedef 常用于給復(fù)雜的類型命名。

4 常見(jiàn)方法舉例4.1 未用typedef先聲明結(jié)構(gòu)體類型,再定義結(jié)構(gòu)變量

struct tempA

{

char cvariableA; // char 類型的變量 cvariableA

int ivariableB; // int 類型的變量 ivariableB

float fvariableC; // float 類型的變量 fvariableC

char carrayA; // char 類型的數(shù)組 carrayA

};

struct tempA book; // C 寫法

tempA book; // C++ 寫法

在聲明類型的同時(shí),定義結(jié)構(gòu)變量

struct tempA

{

char cvariableA; // char 類型的變量 cvariableA

int ivariableB; // int 類型的變量 ivariableB

float fvariableC; // float 類型的變量 fvariableC

char carrayA; // char 類型的數(shù)組 carrayA

}book;

直接定義結(jié)構(gòu)體類型變量(沒(méi)有標(biāo)記)

struct

{

char cvariableA; // char 類型的變量 cvariableA

int ivariableB; // int 類型的變量 ivariableB

float fvariableC; // float 類型的變量 fvariableC

char carrayA; // char 類型的數(shù)組 carrayA

}book;

4.2 使用typedef直接定義結(jié)構(gòu)體變量,沒(méi)有標(biāo)記,但是可以使用此變量引用該結(jié)構(gòu)體

typedef struct

{

char cvariableA; // char 類型的變量 cvariableA

int ivariableB; // int 類型的變量 ivariableB

float fvariableC; // float 類型的變量 fvariableC

char carrayA; // char 類型的數(shù)組 carrayA

}tempB;

tempB book; // C C++ 均可

推薦此方法,即定義標(biāo)記,又定義結(jié)構(gòu)體變量

typedef struct tempA

{

char cvariableA; // char 類型的變量 cvariableA

int ivariableB; // int 類型的變量 ivariableB

float fvariableC; // float 類型的變量 fvariableC

char carrayA; // char 類型的數(shù)組 carrayA

}tempB;

此時(shí)如果使用 C ,則可以使用 tempB ;如果使用 C++ ,則可以使用 tempA 或 tempB 。

5 總結(jié)除了上邊講的,還有一些其他的結(jié)構(gòu)體初始化,結(jié)構(gòu)體里邊定義結(jié)構(gòu)體等內(nèi)容。但萬(wàn)變不離其宗,都可以參考文章開(kāi)頭的網(wǎng)址,里邊講的比較詳細(xì)。這里只是簡(jiǎn)單做個(gè)總結(jié)。

后續(xù)我也會(huì)按文中推薦的標(biāo)準(zhǔn)來(lái)使用(用 typedef ,標(biāo)記和結(jié)構(gòu)變量都要),這樣兼容性比較好,也使自己的代碼有比較統(tǒng)一的風(fēng)格。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3846

    瀏覽量

    85249
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2124

    瀏覽量

    77127

原文標(biāo)題:C/C++ 結(jié)構(gòu)體定義及使用

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    keil實(shí)現(xiàn)cc++混合編程

    參考touchgfx生成的代碼,發(fā)現(xiàn)了一個(gè)不需要添加--cpp11 參數(shù)的解決方法,具體操作如下。 一、創(chuàng)建一個(gè)空白的C文件和頭文件在頭文件中定義c++文件中需要調(diào)用的函數(shù),如圖所示 二、在
    發(fā)表于 01-26 08:58

    10個(gè)例子代碼,C語(yǔ)言結(jié)構(gòu)的高級(jí)

    當(dāng)涉及到C語(yǔ)言結(jié)構(gòu)的高級(jí)**時(shí),有很多有趣和強(qiáng)大的技巧可以應(yīng)用。下面是10個(gè)例子代碼,每個(gè)例子都使用了不同的高級(jí)結(jié)構(gòu)技術(shù),包括位字段、嵌
    發(fā)表于 01-05 06:32

    C語(yǔ)言與C++的區(qū)別及聯(lián)系

    是面向過(guò)程語(yǔ)言,而C++是面向?qū)ο笳Z(yǔ)言。說(shuō)CC++的區(qū)別,也就是在比較面向過(guò)程和面向?qū)ο蟮膮^(qū)別。 1、面向過(guò)程和面向?qū)ο蟮膮^(qū)別 面向過(guò)程:面向過(guò)程編程就是分析出解決問(wèn)題的步驟,然
    發(fā)表于 12-24 07:23

    結(jié)構(gòu)聲明與定義

    一樣,去聲明我們的結(jié)構(gòu)體操作,但是C語(yǔ)言中規(guī)定,聲明結(jié)構(gòu)變量的時(shí)候,struct關(guān)鍵字是不可少的。 struct 結(jié)構(gòu)
    發(fā)表于 12-11 07:52

    CC++之間的聯(lián)系

    1、語(yǔ)法兼容性: C++完全兼容C語(yǔ)言的語(yǔ)法,這意味著任何有效的C語(yǔ)言程序都可以直接在C++編譯器下編譯通過(guò)。 2、底層控制: C++
    發(fā)表于 12-11 06:51

    C語(yǔ)言和C++之間的區(qū)別是什么

    (inheritance)、多態(tài)(polymorphism)等面向?qū)ο缶幊谈拍睢3绦騿T可以通過(guò)定義類來(lái)創(chuàng)建對(duì)象,并利用類的實(shí)例進(jìn)行操作。 2、類型系統(tǒng)與安全性: C++具有更為嚴(yán)格的類型檢查機(jī)制
    發(fā)表于 12-11 06:23

    C/C++條件編譯

    條件編譯是一種在編譯時(shí)根據(jù)條件選擇性地包含或排除部分代碼的處理方法。在 C/C++ 中,條件編譯使用預(yù)處理指令 #ifdef、#endif、#else 和 #elif 來(lái)實(shí)現(xiàn)。常用的條件編譯指令有
    發(fā)表于 12-05 06:21

    C語(yǔ)言結(jié)構(gòu)使用

    型的數(shù)據(jù)組合。 結(jié)構(gòu)的聲明與定義 結(jié)構(gòu)的聲明一般形式為: c struct
    發(fā)表于 11-12 08:30

    C/C++代碼靜態(tài)測(cè)試工具Perforce QAC 2025.3的新特性

    ?Perforce Validate?中?QAC?項(xiàng)目的相對(duì)/根路徑的支持。C++?分析也得到了增強(qiáng),增加了用于檢測(cè) C++?并發(fā)問(wèn)題的新檢查,并改進(jìn)了實(shí)體名稱和實(shí)
    的頭像 發(fā)表于 10-13 18:11 ?574次閱讀
    <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>代碼靜態(tài)測(cè)試工具Perforce QAC 2025.3的新特性

    定義IO初始化結(jié)構(gòu)

    由上述IOPORT相關(guān)功能的枚舉類型我們可以知道,在對(duì)IOPORT模塊進(jìn)行初始化時(shí)需要根據(jù)情況配置它們。因此我們定義一個(gè)IOPORT初始化的結(jié)構(gòu)類型IOPORT_Init_t,它的成員包括了由上述所有枚舉類型所聲明的變量,因此
    的頭像 發(fā)表于 07-16 16:26 ?1418次閱讀

    《ESP32S3 Arduino開(kāi)發(fā)指南》第三章 C/C++語(yǔ)言基礎(chǔ)

    基礎(chǔ),由于篇幅有限,在此僅對(duì)C/C++語(yǔ)言基礎(chǔ)進(jìn)行簡(jiǎn)單介紹。本章將分為如下9個(gè)小節(jié):3.1 數(shù)據(jù)類型3.2 運(yùn)算符3.3 表達(dá)式3.4 數(shù)組3.5 字符串3.6 注釋3.7 順序結(jié)構(gòu)3.8 選擇
    發(fā)表于 06-10 09:20

    VirtualLab應(yīng)用:亞波長(zhǎng)結(jié)構(gòu)偏振光柵的深入分析

    性和熱穩(wěn)定性是至關(guān)重要的,該方法比傳統(tǒng)的基于雙折射晶體或多層系統(tǒng)的方法具有明顯的優(yōu)勢(shì)。 在本周的時(shí)事通訊中,我們對(duì)快速物理光學(xué)建模和設(shè)計(jì)軟件虛擬實(shí)驗(yàn)室融合中的這種結(jié)構(gòu)進(jìn)行了詳細(xì)的分析,使用了文獻(xiàn)[J.
    發(fā)表于 05-26 08:45

    主流的 MCU 開(kāi)發(fā)語(yǔ)言為什么是 C 而不是 C++

    在單片機(jī)的地界兒里,C語(yǔ)言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉(zhuǎn)。先說(shuō)內(nèi)存這道坎兒。您當(dāng)stm32f4的256kRAM
    的頭像 發(fā)表于 05-21 10:33 ?1052次閱讀
    主流的 MCU 開(kāi)發(fā)語(yǔ)言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    的地址)出發(fā),采用推導(dǎo)的方式,深入淺出的分析了廣大C程序員學(xué)習(xí)和開(kāi)發(fā)中遇到的難點(diǎn)。 2. 從方法論的高度對(duì)C語(yǔ)言在數(shù)據(jù)結(jié)構(gòu)和算法方面的應(yīng)用
    發(fā)表于 05-13 16:45

    VirtualLab Fusion應(yīng)用:亞波長(zhǎng)結(jié)構(gòu)偏振光柵的深入分析

    性和熱穩(wěn)定性是至關(guān)重要的,該方法比傳統(tǒng)的基于雙折射晶體或多層系統(tǒng)的方法具有明顯的優(yōu)勢(shì)。 在本周的時(shí)事通訊中,我們對(duì)快速物理光學(xué)建模和設(shè)計(jì)軟件虛擬實(shí)驗(yàn)室融合中的這種結(jié)構(gòu)進(jìn)行了詳細(xì)的分析,使用了文獻(xiàn)[J.
    發(fā)表于 03-28 08:55