c語言中結(jié)構(gòu)體的一般定義 結(jié)構(gòu)體與什么兼容?
結(jié)構(gòu)體與什么兼容?C 中的結(jié)構(gòu)體與類的區(qū)別只在于結(jié)構(gòu)體的成員默認(rèn)為公有成員(public可見性),而類的成員默認(rèn)為私有成員(private可見性),C 中的結(jié)構(gòu)體不同于C語言里的結(jié)構(gòu)體,C里的結(jié)構(gòu)體只
結(jié)構(gòu)體與什么兼容?
C 中的結(jié)構(gòu)體與類的區(qū)別只在于結(jié)構(gòu)體的成員默認(rèn)為公有成員(public可見性),而類的成員默認(rèn)為私有成員(private可見性),C 中的結(jié)構(gòu)體不同于C語言里的結(jié)構(gòu)體,C里的結(jié)構(gòu)體只能封裝一些單一的數(shù)據(jù),不能含方法,但在C 的結(jié)構(gòu)體內(nèi)可以有構(gòu)造函數(shù),成員函數(shù),還可以指定成員的訪問權(quán)限(如public和private)。
1、類可以被認(rèn)為是結(jié)構(gòu)體的一個升級版,它是由結(jié)構(gòu)體演變過來的,在此基礎(chǔ)上加了一些限制,以便更好實現(xiàn)面向?qū)ο蟮脑O(shè)計。結(jié)構(gòu)體基本用在很多數(shù)據(jù),需要一個結(jié)構(gòu)體來封裝這些數(shù)據(jù)。而類的話,是面向?qū)ο蟮乃枷?,可以有很多接口讓人調(diào)用,私有變量等外部不能調(diào)用,還有保護(hù)類型的變量。
2、結(jié)構(gòu)體也可以被認(rèn)為是一種特殊的類,它不存在任何函數(shù),構(gòu)造和析構(gòu)函數(shù)也沒有,而且是一個公共的的類;相關(guān)推薦gtgtC 中適用于類和結(jié)構(gòu)體的內(nèi)存池模板類
3、C 類和結(jié)構(gòu)體概念基本一致,區(qū)別在于結(jié)構(gòu)體在默認(rèn)情況下成員是公共的(public),類在默認(rèn)情況下成員是私有的(private),其他的都一樣,類有的結(jié)構(gòu)體也有。
4、C 結(jié)構(gòu)體內(nèi)部成員變量及成員函數(shù)默認(rèn)的訪問級別是public,而c 類的內(nèi)部成員變量及成員函數(shù)的默認(rèn)訪問級別是private。
5、C 結(jié)構(gòu)體的繼承默認(rèn)是public,而c 類的繼承默認(rèn)是private。
6、類要加上public變成共有的才能被訪問,而結(jié)構(gòu)本身就是共有的可直接訪問。
7、C 中struct與class本質(zhì)上相同的,只是默認(rèn)的訪問權(quán)限不同,之所以要保留struct,是為了與C兼容。
與C中結(jié)構(gòu)體不同的是,C 中定義結(jié)構(gòu)體變量時可以不加struct關(guān)鍵字,如:
C 的struct,enum,union與C語言有何區(qū)別?
enum是枚舉,就是某個變量的值是能夠列舉的,比如,星期的話就每周1到7,月的話就1到12、而struct的話是對于某個變量是有很多數(shù)據(jù)類型構(gòu)成一個總體的,比如學(xué)生這個變量,他需要學(xué)號,姓名,年齡,性別等等,這個時候就需要定義結(jié)構(gòu)體了。而uninon的話呢,其中定義的變量都只占一個內(nèi)存。。。
C/C 語言中struct結(jié)構(gòu)體定義中__packed的作用是什么?
1、__packed是字節(jié)對齊的意思。
比如說int float double char它的總大小是4 4 8 1 17
但如果不用__packed的話,系統(tǒng)將以默認(rèn)的對齊(假設(shè)是4字節(jié)),那么它占4 4 8 4 20;(不足4字節(jié)以4字節(jié)補(bǔ)齊)。
2、在VS2008上述方法不能用了,如果想設(shè)置對齊,只要選擇工程屬性-配置屬性-C/C -代碼生成就能設(shè)置,它的選項有1、2、4、8、16。在GCC下,可以在加上#pragma pack(4) 4字節(jié)對齊的意思,其它同理。