C與C 結構體的區別

2021-08-02 02:51:06 字數 2255 閱讀 9843

筆者介紹:姜雪偉,it公司技術合夥人,it高階講師,csdn社群專家,特邀編輯,暢銷書作者,已出版書籍:《手把手教你架構3d遊戲引擎》電子工業出版社和《unity3d實戰核心技術詳解》電子工業出版社等。

不論在面試中還是專案開發中,都會遇到c與c++混用的情況,面對這些我們就要對它們的區別非常熟悉,這樣才能在專案中運用自如。在此也是給讀者做乙個總結,供參考。。。。。

在c ++中,struct和class是完全相同的,除了該struct預設為public 可見,class預設為private不可見。

c和c ++結構之間的一些重要區別:

結構內的成員函式:c中的結構不能在結構內部具有成員函式,但c ++中的結構可以與成員函式一起使用。

直接初始化:我們不能直接初始化c中的結構資料成員,但我們可以在c ++中實現。

首先給讀者展示的是c語言**:

// c program to demonstrate that direct

// member initialization is not possible in c

#includestruct record;

// driver program

int main()

/* output : compiler error

6:8: error: expected ':', ',', ';', '}' or

'__attribute__' before '=' token

int x = 7;

^in function 'main': */

輸出編譯錯誤,因為在c語言中的成員不能賦初值。

再給讀者展示c++中的**展示:

// cpp program to initialize data member in c++

#includeusing namespace std;

struct record;

// driver program

int main()

// output

// 7

輸出結果是7,編譯正確。

3、使用struct關鍵字:

在c中,我們需要使用struct宣告乙個struct變數。在c ++中,struct不是必需的。例如,讓record有乙個結構。

在c中,我們必須對record變數使用「struct record」。在c ++中,我們不需要使用struct,只能使用'record'。

4、靜態成員:

c結構不能有靜態成員,但允許使用c ++。

c的案例**如下所示:

// c program with structure static member

struct record;

// driver program

int main()

/* 6:5: error: expected specifier-qualifier-list

before 'static'

static int x;

^*/

編譯錯誤,在c中的結構體中不能宣告static靜態變數。

再看看c++中的**:

// c++ program with structure static member

struct record;

// driver program

int main()

5、

sizeof運算子:

該運算子將為c中的空結構生成

0,而在c ++中為空結構生成1。

// c program to illustrate empty structure

#include//empty structure

struct record;

//driver program

int main()

輸出c:

0
c ++輸出:

1
最後兩條:

6、資料隱藏:

c結構不允許資料隱藏的概念,但在c ++中允許,因為c ++是物件導向的語言,而c不是。

7、訪問修飾符:

c結構沒有訪問修飾符,因為這些修飾符不被語言支配。c ++結構可以具有這個概念,因為它在語言中是內建的。

C 結構體與類的區別

學習了c 的物件導向,最常見的和寫的就是類結構體,下面主要介紹一下結構體和類的區別。首先類是c 中物件導向獨有的,但是c和c 中都有結構體,下面我們來看一下c和c 中結構體的區別。這裡主要從封裝 多型 繼承 封裝和訪問許可權幾個方面來說。1 c和c 中結構體的區別 1 多型 c的結構體內不允許有函式...

C 結構體與類的區別

c 中的結構體型別 struct 型別是一種值型別,通常用來封裝小型相關變數組,例如,矩形的座標或庫存商品的特徵。下面的示例顯示了乙個簡單的結構宣告。public struct postaladdress 結構與類共享幾乎所有相同的語法,但結構比類受到的限制更多 儘管結構的靜態字段可以初始化,結構例...

C 結構體與類的區別

相同之處 c 中的結構體中可以包含函式,也可以定義public private protected資料成員 定義了結構體之後,可以使用結構體名來建立物件,但是c中的結構體不允許含有函式 即 在c 中,結構體中可以有成員變數,成員函式,可從別的類繼承,也可以被別的類繼承,可以含有虛函式 不同之處 結構...