C語言和C 在struct上的區別

2023-02-05 13:05:19 字數 6480 閱讀 7032

1樓:匿名使用者

像這樣的一個c++的struct,當寫出如下**的時候:

clock clock;

clock.tick();

編譯器自動轉換成如下類似的c**:

struct clock clock;

clock_construct(&clock); /*構造clock*/

因為c++的成員函式都有一個this指標,呼叫的時候必須傳遞一個this指標,所以會多出來一個引數。如果硬要用c語言來模仿c++的這種呼叫方式,只能是這樣:

typedef struct clock  clock;

void clock_construct(clock * const this); /*「建構函式」,必須手動呼叫*/

void clock_tick(clock * const this); /*模仿clock_set函式即可*/

void clock_show(clock * const this);

void clock_run(clock * const this);

void clock_set(clock * const this, int h, int m, int s)

void clock_destruct(clock * const this); /* 「解構函式」,必須手動呼叫*/

函式指標其實沒必要,因為還是得想辦法單另傳遞this指標。

2樓:匿名使用者

其實按照規定,無論c還是c++,struct裡面都不能定義函式的

某些c++編譯器能支援定義函式,是因為都把他們當class來處理了

c語言與c++結構體的區別

3樓:匿名使用者

c語言的結構就是值型別,跟int,char沒有什麼區別

c++的結構跟類已經非常接近了,就是如果不具體說明,預設為共有

4樓:

比如說這個結構體吧.

struct mystruct

str;

在c++裡可以這樣用 mystruct s1;mystruct 就是一個型別,在c裡只能這樣用其 struct mystruct s1 mystruct不是一個型別必須和struct關鍵字連用.就這點不同了.

5樓:匿名使用者

我這樣跟你說吧,c語言中的結構體與c++裡的結構體沒有什麼區別,但在c++裡多了一個類,其實類和結構體是一樣的,只不是類在預設的情況下是私有的,而結構體在預設情況下是公有的;例如:我們寫到

struct name;

其實它真正的是:

struct name;

在c++中

以class name;

其實是class name;

6樓:

本質區別就是c++的struct已經是類了,不過與class唯一區別在於預設成員屬性是public而非private

所以c++中的定義結構體和定義class幾乎一致

請問c++的類和c裡面的struct有什麼區別

7樓:宣小翠習韋

c++裡面的類預設狀態時private的

而且可以有成員函式

更安全c裡面的struct

預設是public,一般不能有成員函式而只有資料成員謝謝採納

8樓:徭沛萍招迪

類預設是私有的

struct預設是公有

而且類可以自定義建構函式,

struct有預設的建構函式(參考c++

pimer)

9樓:

(1)c++類中屬性預設訪問型別為private,而c++中的struct預設的訪問型別為public

(2)c++類可以有繼承,虛擬函式,多型,而c++中struct不可以。

c語言struct裡面不可以有函式,只能有變數。 c++給c中的struct功能擴充套件了

10樓:

原來c語言裡只有結構體struct,而且不允許在裡面定義函式。後來c++對c做了擴充,併產生了class,但注意的是,struct 還是值型別,而 class 是物件型別,不過在c++裡struct可以理解成為一種特殊的類,結構體和類可以通用.

11樓:圭騫騫磨燕

如果你在c++編譯器利用

你說的是c++中

class

和struct

有兩個區別

1.同上面他們說的

class

成員預設是

private

struct

成員預設是

public

2.class

繼承方式預設是私有繼承

struct

繼承方式預設是共有繼承

如果你說的是c++的類

和c裡面的struct

區別類有虛表

支援物件導向特性

struct只不過是多種資料成員簡單的封裝編譯器構造的時候是不一樣的

太多了一句話兩句話也說不清楚。況且我也不都清楚建議查現代編譯原理

12樓:匿名使用者

唯一區別就是

struct預設的成員的訪問型別是public

class預設的成員訪問型別是private

13樓:匿名使用者

類和結構體的區別

1. class和structure很相似, 從技術層面講,class是引用,而structure則是數值. 有人很形象的說

class裡有行動,方法,成員,是有機體的結合,而structure則是活生生的有機體,

2. 通俗的理解,class包涵structure, class裡有方法拉,成員拉,什麼滴,

而structure只有資料,

一.類與結構的示例比較:

結構示例:

public struct person}

類示例:

public class testtime}

呼叫過程:

public class test}

〈由廈嫻睦

c++的類和c裡面的struct有什麼區別?

14樓:匿名使用者

c++類裡面有成員函式,預設私有

c++的結構預設為共有

c語言結構,是值型別,不能有函式

15樓:御含靈

c++的struct和class是一回事,不過用struct宣告的結構,所有的成員和函式預設都是public的,class裡面所有的成員和函式預設都是private;c++的結構可以繼承

c裡面的結構只是變數的聚合體,結構不能有函式,c++的struct可有構造和解構函式 複製 以及其他成員函式;除了這一點其他都是一樣的

16樓:匿名使用者

(1)c++類中屬性預設訪問型別為private,而c++中的struct預設的訪問型別為public

(2)c++類可以有繼承,虛擬函式,多型,而c++中struct不可以。

c語言struct裡面不可以有函式,只能有變數。 c++給c中的struct功能擴充套件了

17樓:匿名使用者

(2)c 類可以有繼承,虛擬函式,多型,而c 中struct不可以。 c語言struct裡面不可以有函式,只能有變數。 c 給c中的struct功能擴充套件了 唯一區別就是

18樓:卞壯海流如

c++的struct可以當作class來用,他和c++中class的唯一的區別是,class中的成員預設是private,而struct的成員預設為public。

c中的struct只能是一些變數的集合體,可以封裝資料卻不可以隱藏資料,而且成員不可以是函式。

19樓:顧定宓蕙

struct的成員的預設訪問說明符為public,而class的成員的預設訪問說明符為private。其他沒有區別

c++物件導向的類class和c語言的結構體struct有什麼區別?

20樓:匿名使用者

struct只是簡單的把不同型別的資料,行為封裝起來,所有成員型別都是對外開放的。而class同樣是封裝,但它可以設定private型別,對外隱藏資料成員或方法。

21樓:

class 預設成員屬性是private,struct 預設成員屬性是public.相比之下class 更封裝更好

22樓:匿名使用者

可以說一般應用上,沒太大區別,用結構體就差不多了,class比struce多了繼承和派生等特性,我們在一般程式設計中還是多用struce

23樓:匿名使用者

標準c++中

struct 和class 的唯一區別是struct預設是public

class則為private

不過習慣上在class裡定義函式

struct只定義變數

24樓:匿名使用者

類可以實現細節屏避,只留介面函式

結構體也可以實現類的大部分功能,除了對資料的訪問許可權設定

25樓:

你先好好理解理解什麼是物件導向,就明白了兩者的區別

26樓:匿名使用者

struct沒有繼承,沒有封裝,要說封裝只有初步封裝。而class把資料,介面可以以三種型別封裝,private,public,protected;還可以繼承和派生。但是它們都可以提供自己的介面函式,建構函式。

一個類可以由結構繼承而來。struct只能叫做資料的集合,外部可以任意訪問,但是類就完成了封裝,維護了資料安全,這就是物件導向的理念。

27樓:

class預設私有,struct預設公有,封裝性的實現方式不一樣

c語言和c++在語法上有那些區別?要詳細具體一點!!!

28樓:匿名使用者

/*總得語法上c++更加靈活,隨便想到了幾個寫出來*/struct t;

do_some_thing(int &i) //c++專有的引用型別,函式中對i的操作將影響原變數。

main() //這樣註釋 c語言不允許的另外還有過載,類等等c語言裡沒有的,不再贅述。

以上所謂c語言都是89版iso/ansi c,c++是在這個版本上開發的,所以c89是c++的子集。後來c又有了所謂99版的c99,支援了單行註釋,還加了幾個c++都沒有的關鍵字,開始與c++分道揚鑣了。

29樓:匿名使用者

這個多了。。。建議你看書去。。。

30樓:匿名使用者

簡單說c程序導向,c++物件導向

c++在c的基礎上做了很大擴充套件,增加了類,支援函式過載,模板等新特性c++通過類對過程實現了封裝

c/c++ 類和結構體的差別

31樓:豆哥的每一天

c/c++ 類和結構體的的區別:

1、結構體基本用在很多資料,需要一個結構體來封裝這些資料。而類的話,是物件導向的思想,可以有很多介面讓人呼叫,私有變數等外部不能呼叫,還有保護型別的變數。

2、結構體也可以被認為是一種特殊的類,它不存在任何函式,構造和解構函式也沒有,而且是一個公共的的類。

3、結構體在預設情況下成員是公共的(public),類在預設情況下成員是私有的(private)。

4、c++結構體內部成員變數及成員函式預設的訪問級別是public,而c++類的內部成員變數及成員函式的預設訪問級別是private。

5、c++結構體的繼承預設是public,而c++類的繼承預設是private。

6、類要加上public變成共有的才能被訪問,而結構本身就是共有的可直接訪問。

7、c定義結構體變數時需要加struct關鍵字,c++中定義結構體變數時可以不加struct關鍵字。

32樓:全採褚子騫

c結構體

c是程序導向的程式語言。在c語言中,結構體是用作一種資料聚合方式,將一組關聯緊密的資料組成統一的資料進行操作。其功能是最基本的,在c++結構體和c++類中同樣包含該功能。

c++結構體

c++是物件導向的程式語言。結構體的表現形式,使用方法與c語言的結構體一致。

區別:c++結構體是物件導向的,可以在其中定義函式。

c++的結構體存在訪問許可權(預設public)。可以通過private方法修飾內部成員變數是否可以被修改。

c++類

c++類是物件導向封裝的基礎,功能和c++結構體類似,同樣可以定義函式。

區別:c++類的預設訪問許可權是private。

網路編成語言和C語言的區別,c語言網路程式設計 網路程式設計什麼語言

網路程式設計這個概念太大了,包括很多東西,需要各種語言。大概給你說一說吧。傳輸層以下的程式設計技術,一般來說是用匯編 c語言這一類與底層結合很緊密的程式語言。比如,基本的路由器程式設計 網路層資料交換技術程式設計等等。其實就是socket程式設計,通過socket埠和其餘的電腦通訊。windows程...

組合語言與C 的區別,組合語言和C 語言有什麼區別

彙編是最基礎的程式語言.c 是一種物件導向物件的語言.c 要想在系統上執行,最終是轉換為機器碼.彙編也是,但是彙編轉換為機器碼比較容易.c 轉換則要先轉換為彙編.c也可以稱作高階語言.但是,c語言在c 之下.起一個過渡作用.如果你想學好程式設計.先學c語言或者組合語言.鄙人建議你先學組合語言 然後再...

程式語言和組合語言有什麼區別啊,C語言和組合語言的區別是什麼?

首先玩糾正的是,組合語言也是一種程式語言,屬於程式設計。那彙編 典型的低階語言 和高階語言有什麼區別呢?起初,人們程式設計用的是機器語言,機器語言只有0和1。機器語言缺點很多,有3點最為顯著 1 難學難記難用 2 程式設計效率低 3 可移植性差 就是說,編好的程式在這臺機器上能用,在別的機器上劉不能...