C和C 結構體區別

2021-10-03 05:04:05 字數 1114 閱讀 6577

c的結構體內不允許有函式存在,c++允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式、析構函式、和this指標的。

c的結構體對內部成員變數的訪問許可權只能是public,而c++允許public,protected,private三種。

c語言的結構體是不可以繼承的,c++的結構體是可以從其他的結構體或者類繼承過來的。

在c中定義乙個結構體型別要用typedef,如下:

typedef struct complexcomplex;
那麼,在說明complex變數的時候可以這樣寫

complex complex;
但是如果沒有typedef就必須用

struct complex complex;
來宣告。這裡的complex實際上就是struct complex的別名。另外這裡也可以不寫complex(於是也不能struct complex complex;了)

typedef structcomplex;
但在c++裡很簡單,直接

struct complex;
於是就定義了結構體型別complex,宣告變數時直接complex complex;

在c++中如果用typedef的話,又會造成區別:

struct complex1complex;//complex是乙個變數

typedef struct complex2complex2;//complex是乙個結構體型別

使用時可以直接訪問complex.read,但是complex2則必須先complex2 complex2;然後complex2.read = 1;

掌握上面兩條就可以了,不過最後我們**個沒多大關係的問題。如果在c程式中我們寫:

typedef structaaa,bbb,ccc;
這算什麼呢?我個人觀察編譯器(vc6)的理解,這相當於

typedef structaaa;

typedef aaa bbb;

typedef aaa ccc;

也就是說aaa,bbb,ccc三者都是結構體型別。宣告變數時用任何乙個都可以,在c++中也是如此。但是你要注意的是這個在c++中如果寫掉了typedef關鍵字,那麼aaa,bbb,ccc將是截然不同的三個物件。

C結構體 C 結構體 和 C 類的區別

c結構體 c 結構體基本相同,c 類主要是方法的實現。結構體是資料型別的集合 類是資料型別加方法的集合,基本如此,更注重方法。1.c的結構體和c 結構體的區別 1 c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。2...

C和C 結構體的區別

c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。c的結構體對內部成員變數的訪問許可權只能是public,而c 允許public,protected,private三種。c語言的結構體是不可以繼承的,c 的結構體是可...

C和C 結構體的區別

1.c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。2.c的結構體對內部成員變數的訪問許可權只能是public,而c 允許public,protected,private三種。3.c語言的結構體是不可以繼承的,c ...