C 語言和C 語言的 struct對比

2022-03-12 02:18:07 字數 1411 閱讀 3005

c 語言和c++語言的 struct對比

author: stonehat

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

struct成員預設的是public, c++預設private。而c語言struct不是類,不可以有函式,也不能使用類的特徵例如public等關鍵字 ,也不可以有static關鍵字。

2. c++ struct裡面成員初始化的形式和類是相同的,不可以直接初始化,就是不可以定義成員的時候同時初始化。c語言 struct中間的某個型別(例如int)也不可以直接初始化。

就是說下面int a = 0;在c++和c語言裡面都是不能通過的。

struct he

//c++和c編譯是不能通過的。

3.  初始化方式,c++ struct的初始化,c++不僅擁有c語言的初始化方式。如下:

struct he

;int main(); // 因為 he在c++是類名,可以省略struct。c語言裡面要加上struct 才行。

return

0;}

也可以使用類的初始化方式

struct he

;int main()

4. 型別不同,下面**:

struct he

;

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

struct he a;   //c語言 變數方式

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

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

5. typedef struct 在c++和c語言中都是一樣的功能,定義別名。 但是要注意下面的**的區別

#include 

#include

typedef struct he

*phe,dhe,ehe; //

這是定義了乙個struct he*型別別名和兩個普通別名,main函式只考慮指標型別名。

int main()

//

**二#include

#include

struct he

*phe,dhe,ehe; //

這裡定義了乙個指標型變數和兩個普通變數

上面兩個**省略 struct的名字 he都是可以的。

總結:c++語言因為是和c語言相容的,所以c語言的語法在c++編譯器裡不會出錯,但是程式設計師最好知道什麼是c語言,什麼是c++語言。

c語言和c 中struct的區別

1.雖然長的一樣,但是本質上型別不同 c語言中 struct是使用者自定義資料型別 udt c 中struct是抽象資料型別 adt 所以下面 struct he 在c裡面實際上資料型別為 struct he 所以定義乙個結構he變數都要 帶上struct.structhe a c語言 變數方式 而...

c語言和c 的「 」的語言

在c語言中,有三種作用,分別如下 1.取位址。單目運算子。用來取乙個變數的位址。比如int i,p p i 這裡的 作用是取變數i的位址。int a 1 int p a 取位址給位址變數,所以這個是取位址 引用 int a 1 int p a 取乙個變數的別名,我們可以通過這個變數賦值給標有 符號的...

C語言和 C 語言關係

沒有深思熟慮的設計過程 使用時存在很多 灰色地帶 殘留量過多低階語言的特徵 直接利用指標進行記憶體操作 最終程式執行效率的高效 當面向過程方 暴露越來越多的缺陷的時候,業界開始考慮在工程專案中引入物件導向的設計方法,而第乙個需要解決的問題就是 高效的物件導向語言,並且能夠相容已經存在的 c語言 物件...