c語言和c 中struct的區別

2021-09-19 23:35:29 字數 1181 閱讀 8361

1. 雖然長的一樣,但是本質上型別不同:c語言中:struct是使用者自定義資料型別(udt);c++中struct是抽象資料型別(adt),所以下面**:

struct he

;

在c裡面實際上資料型別為 (struct he),所以定義乙個結構he變數都要 帶上struct. 

structhe a;//c語言 變數方式

而在c++裡面實際上資料型別為he(主要是因為結構體被當成類對待了),所以定義變數不需要 struct.

he a;//c++語言 變數

由於c++中的struct是抽象資料型別,所以可以繼承也可以實現多型,只是因為有了class 一般不用它。 

2.  c++語言將struct當成類來處理的,所以c++的struct可以包含c++類的所有東西,例如建構函式,析構函式,友元等,c++的struct和c++ class 唯一不同就是struct成員預設的是public, c++預設private。

這裡不要記混了,c++中的struct為了和c語言相容,所以預設也是public 的。

而c語言struct不是類,不可以有函式,也不能使用類的特徵例如public等關鍵字 ,也不可以有static關鍵字,說到底它只是一些變數的集合體,可以封裝資料卻不可以隱藏資料。

【總結】

struct     

c語言c++

成員沒有函式成員,只有資料

函式和資料都可以有

訪問許可權

沒有訪問許可權的設定,及對外不隱藏資料

有訪問許可權的設定private,public,protected

是否可以繼承

不可以有繼承關係

【補充】

在c裡面,你可以 

struct s s_instance;
也可以 這樣:

typedef struct s; 

s s_instance;

注意:前者struct s {} 是乙個型別,中間的s是乙個tag,所以只能用1次。 

後者typedef把struct {} 定義為型別s,所以s可以多用。

基礎的東西不用就忘記了....

C 語言和C 語言的 struct對比

c 語言和c 語言的 struct對比 author stonehat 1.c 語言將struct當成類來處理的,所以c 的struct可以包含c 類的所有東西,例如建構函式,析構函式,友元等,c 的struct和c 類唯一不同就是 struct成員預設的是public,c 預設private。而c...

C語言和C 的區別

c和c 的關係 就像是win98跟winxp的關係。c 是在c的基礎上增加了新的理論,玩出了新的花樣。所以叫c加加。c和c 的區別 c是乙個結構化語言,它的重點在於演算法和資料結構。c程式的設計首要考慮的是如何通過乙個過程,對輸入 或環境條件 進行運算處理得到輸出 或實現過程 事務 控制 c 首要考...

C語言和C 的區別

c 是c發展來的!c 是物件導向的語言,而c是結構化的語言!c的所有 在c 上都能應用,而c 的 在c上不能應用!c 是功能更強大的c!c語言與vc 的區別有很多 1,全新的程式程式思維,c語言是面向過程的,而vc 是物件導向的。2,c語言有標準的函式庫,它們鬆散的,只是把功能相同的函式放在乙個標頭...