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