日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

C++中位域以及union聯(lián)合詳解

C語言編程學習基地 ? 來源:C語言編程學習基地 ? 作者:C語言編程學習基地 ? 2021-09-24 11:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

位域

Bit mode:2;//mode 占 2 位

類可以將其(非靜態(tài))數(shù)據(jù)成員定義為位域(bit-field),在一個位域中含有一定數(shù)量的二進制位。當一個程序需要向其他程序或硬件設備傳遞二進制數(shù)據(jù)時,通常會用到位域。

位域在內(nèi)存中的布局是與機器有關的

位域的類型必須是整型或枚舉類型,帶符號類型中的位域的行為將因具體實現(xiàn)而定

取地址運算符(&)不能作用于位域,任何指針都無法指向類的位域

extern “C”

(1)被 extern 限定的函數(shù)或變量是 extern 類型的

(2)被 extern “C” 修飾的變量和函數(shù)是按照 C 語言方式編譯和鏈接的

extern “C” 的作用是讓 C++ 編譯器將 extern “C” 聲明的代碼當作 C 語言代碼處理,可以避免 C++ 因符號修飾導致代碼不能和C語言庫中的符號進行鏈接的問題。

extern “C” 使用

#ifdef __cplusplusextern “C” {#endif

void *memset(void *, int, size_t);

#ifdef __cplusplus}#endif

struct 和 typedef struct

C 中

// ctypedef struct Student { int age; } S;

等價于

// cstruct Student { int age; };

typedef struct Student S;

此時 S 等價于 struct Student,但兩個標識符名稱空間不相同。

另外還可以定義與 struct Student 不沖突的 void Student() {}。

C++ 中

由于編譯器定位符號的規(guī)則(搜索規(guī)則)改變,導致不同于C語言。

一、如果在類標識符空間定義了 struct Student {。..};,使用 Student me; 時,編譯器將搜索全局標識符表,Student 未找到,則在類標識符內(nèi)搜索。

即表現(xiàn)為可以使用 Student 也可以使用 struct Student,如下:

// cppstruct Student { int age; };

void f( Student me ); // 正確,“struct” 關鍵字可省略

二、若定義了與 Student 同名函數(shù)之后,則 Student 只代表函數(shù),不代表結構體,如下:

typedef struct Student { int age; } S;

void Student() {} // 正確,定義后 “Student” 只代表此函數(shù)

//void S() {} // 錯誤,符號 “S” 已經(jīng)被定義為一個 “struct Student” 的別名

int main() { Student(); struct Student me; // 或者 “S me”; return 0;}

C++ 中 struct 和 class

總的來說,struct 更適合看成是一個數(shù)據(jù)結構的實現(xiàn)體,class 更適合看成是一個對象的實現(xiàn)體。

區(qū)別

最本質的一個區(qū)別就是默認的訪問控制

(1)默認的繼承訪問權限。struct 是 public 的,class 是 private 的。

(2)struct 作為數(shù)據(jù)結構的實現(xiàn)體,它默認的數(shù)據(jù)訪問控制是 public 的,而 class 作為對象的實現(xiàn)體,它默認的成員變量訪問控制是 private 的。

union 聯(lián)合

聯(lián)合(union)是一種節(jié)省空間的特殊的類,一個 union 可以有多個數(shù)據(jù)成員,但是在任意時刻只有一個數(shù)據(jù)成員可以有值。當某個成員被賦值后其他成員變?yōu)槲炊x狀態(tài)。聯(lián)合有如下特點:

默認訪問控制符為 public

可以含有構造函數(shù)、析構函數(shù)

不能含有引用類型的成員

不能繼承自其他類,不能作為基類

不能含有虛函數(shù)

匿名 union 在定義所在作用域可直接訪問 union 成員

匿名 union 不能包含 protected 成員或 private 成員

全局匿名聯(lián)合必須是靜態(tài)(static)的

union 使用

#include《iostream》

union UnionTest { UnionTest() : i(10) {}; int i; double d;};

static union { int i; double d;};

int main() { UnionTest u;

union { int i; double d; };

std::cout 《《 u.i 《《 std::endl; // 輸出 UnionTest 聯(lián)合的 10

::i = 20; std::cout 《《 ::i 《《 std::endl; // 輸出全局靜態(tài)匿名聯(lián)合的 20

i = 30; std::cout 《《 i 《《 std::endl; // 輸出局部匿名聯(lián)合的 30

return 0;}

C 實現(xiàn) C++ 類

C 實現(xiàn) C++ 的面向對象特性(封裝、繼承、多態(tài))

(1)封裝:使用函數(shù)指針把屬性與方法封裝到結構體中

(2)繼承:結構體嵌套

(3)多態(tài):父類與子類方法的函數(shù)指針不同

寫在最后:對于準備學習C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

責任編輯:haq

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

    關注

    90

    文章

    3724

    瀏覽量

    97459
  • C++
    C++
    +關注

    關注

    22

    文章

    2131

    瀏覽量

    77426

原文標題:C++基礎語法梳理:位域以及 union 聯(lián)合!小知識分享

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    使用VectorCAST/C++的AI輔助測試功能

    從2026版本開始,VectorCAST/C++推出首批AI輔助測試功能,旨在幫助開發(fā)團隊解決單元測試過程的兩個核心難點:
    的頭像 發(fā)表于 04-27 14:37 ?328次閱讀

    Nuvoton W78C438C 8微控制器:特性、功能與應用詳解

    Nuvoton W78C438C 8微控制器:特性、功能與應用詳解 在電子設計領域,微控制器是核心組件之一,其性能和功能直接影響著整個系統(tǒng)的表現(xiàn)。今天,我們將深入探討 Nuvoton
    的頭像 發(fā)表于 04-27 11:45 ?275次閱讀

    C++與lua聯(lián)合編程

    在現(xiàn)代軟件工程的龐大架構,純粹的 C++ 與動態(tài)腳本語言之間的關系,早已演變成一場精密的“商業(yè)分工”。C++ 扮演著提供極致性能的“底層重工業(yè)”,而 Lua 則充當著實現(xiàn)靈活業(yè)務邏輯的“輕量級
    發(fā)表于 04-19 16:27

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

    起因項目中使用到一個開源的模擬IIC的庫,封裝的比較好,但是是使用c++寫的。于是將其移植到自己的項目中,主要有以下三步操作: 在工程選項 C/C++中去掉勾選
    發(fā)表于 01-26 08:58

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

    缺點:性能比面向過程低。 二、具體語言上的區(qū)別 1、關鍵字的不同 C語言有32個關鍵字;C++有63個關鍵字。 2、后綴名不同 C源文件后綴.c,
    發(fā)表于 12-24 07:23

    一個經(jīng)典的結構體和聯(lián)合體共用的實例

    Linux 可以 使用 sizeof 進行獲取,默認為字節(jié)對齊的大小。 聯(lián)合聯(lián)合體的參數(shù)共享同一個內(nèi)存地址,所占的內(nèi)存大小完全是由聯(lián)合
    發(fā)表于 12-16 07:14

    什么是

    數(shù)據(jù)結構,稱為“”或“段”。 所謂“”是把一個字節(jié)的二進位劃分為幾個不同的區(qū)域,并
    發(fā)表于 12-15 08:07

    C語言反轉的應用

    反轉(Bit Reversal) unsigned int reverse_bits(unsigned int num) { unsigned int numOfBits = sizeof
    發(fā)表于 12-12 06:42

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

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

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

    函數(shù)重載,即在同一作用內(nèi)可以定義多個同名函數(shù),只要它們的參數(shù)列表不同即可。 C語言不支持函數(shù)重載,每個函數(shù)必須具有唯一的標識符。 4、異常處理: C++內(nèi)置了異常處理機制,允許程序在遇到無法正常
    發(fā)表于 12-11 06:23

    解讀

    只用1個bit就能夠放完,而一個整型卻是4個字節(jié),也就是32bit。這就造成了內(nèi)存的浪費。 好在,C語言為我們提供了一種數(shù)據(jù)結構,稱為「」(也叫端、
    發(fā)表于 12-05 06:45

    利用C語言union特性來定義RGB565格式

    本次分享的內(nèi)容是利用C語言union特性來定義RGB565格式 1)前言 在做視覺相關的任務時,相機的輸入一般會是RGB565(uint16_t)的格式,而我們需要把它顯式轉換成RGB三通
    發(fā)表于 10-30 08:26

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

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

    技能+1!如何在樹莓派上使用C++控制GPIO?

    和PiGPIO等庫,C++可用于編程控制樹莓派的GPIO引腳。它提供了更好的性能和控制能力,非常適合對速度和精度要求較高的硬件項目。在樹莓派社區(qū),關于“Python
    的頭像 發(fā)表于 08-06 15:33 ?4532次閱讀
    技能+1!如何在樹莓派上使用<b class='flag-5'>C++</b>控制GPIO?

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

    在單片機的地界兒里,C語言穩(wěn)坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內(nèi)存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉。先說內(nèi)存這道坎兒。您當stm32f4的256kRAM
    的頭像 發(fā)表于 05-21 10:33 ?1236次閱讀
    主流的 MCU 開發(fā)語言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?
    罗甸县| 三原县| 崇阳县| 廊坊市| 郯城县| 那坡县| 镇康县| 乌鲁木齐市| 余干县| 阜新市| 海口市| 安吉县| 庄浪县| 湖州市| 岱山县| 湖口县| 云安县| 惠州市| 根河市| 辽阳县| 繁峙县| 吉林省| 朝阳市| 龙里县| 哈尔滨市| 三门县| 乌鲁木齐县| 陇南市| 广元市| 视频| 项城市| 昌都县| 景谷| 钟山县| 陕西省| 六枝特区| 佛山市| 佳木斯市| 合阳县| 菏泽市| 上高县|