1樓:帳號已登出
這個是編譯器的對齊特徵!也就是說每種型別的資料的大小必須是對齊大小的整數倍, 不足的使用額外的位元組填充。每種資料都會有乙個並告對齊大小的, 這個我不能給你說乙個確定的值!
比如你上面的**純陵的每種型別的對齊大小是:
struct student ->4
int ->4
char ->4
union student 絕褲明-> 12所以我的編譯器編譯你的**結果是:
struct student 的大小是16union student的大小是12
程式**:#include
#define pri_alg(param) std::cout <#define pri_sz(param2) std::cout struct student {
int age;
char a[10];
pri_sz(struct student);
pri_alg(struct student);
pri_alg(int);
pri_alg(char);
void g()
union student {
int age;
char a[10];
pri_sz(union student);
pri_alg(union student);
pri_alg(int);
pri_alg(char);
int main()
f();std::cout 2樓:全力哈士奇 編衫畢譯器會按4位元組對齊,所以不足4位元組倍拆塌鍵數的會被旅巧補全為4位元組倍數。 看看這個。 c++中結構體和類的記憶體分配以及成員的呼叫? 3樓:匿名使用者 在 c++ 中,結構體和類都是用來定義自定義型別的資料結構。它們有一些相似之處,但也有一些區別。 記憶體分配:在結構體中,所有成員都是公開的,因此它們在記憶體中是連續分配的。 在類中,成員可以被宣告為私有的或保護的,這意味著它們在記憶體中可能不連續分配。此外,類還可以包含虛擬函式,這意味著它會有乙個虛擬函式表指標,儲存類的虛擬函式位址。 成員的呼叫: 在結構體中,可以使用點運算子(.)或箭頭運算子(->訪問結構體的成員。例如: struct point static int getvalue() int myclass::s_value = 0; int main() myclass::setvalue(5); int x = myclass::getvalue(); std::cout 在這個例子中,myclass 類有乙個 static 變數 s_value 和三個 static 方法:setvalue、getvalue 和建構函式。可以使用 :: 操作符在類的外部呼叫這些 static 方法,就像在 main 函式中所示。 請注意,static 變數必須在類的外部定義並初始化。在上面的例子中,static 變數 s_value 被定義為 int 型別並初始化為 0。 還要注意,static 方法不能訪問類的非 static 成員。例如,如果 myclass 類有乙個非 static 變數 m_value,則在 static 方法中無法訪問它。 結構體和共用體在c語言中是怎麼用的 4樓:遊建設葉乙 結構體和共用體其實都是用來描述一組由不同型別變數的集合,也就是說結構體和共用體中都可以同時存在int型、char型、float型等等!! 但是不同的是,結構體內所定義的每乙個變數都有其自己獨立的儲存空間,互不干涉,比如乙個結構體中有乙個int型、同時有乙個char型,那麼它們是獨立的,總共佔用三個位元組空間。 而共用體內定義的每乙個變數都共同享有同乙個儲存空間,儲存空間的大小是佔用空間最大的那個一變數的大小。比如,我還是在裡面有乙個int型和乙個char型,那這個共用體就佔int型的2個位元組,加入我用共用體存入乙個char型資料,我可以用int型來讀取,讀的是二進位資料。 呵呵呵呵,c語言是很久以前學的了,不知道這點記憶對不對,但是希望能幫得到你。 5樓:閔永芬買念 乙個程式通常圍繞這兩個方面進行:資料儲存和資料操作; 結構體是一種資料型別,用來將不同型別的資料組合在一起,決定資料的儲存問題(比如在記憶體佔多大的空間來,系統怎麼解釋儲存資料的位資料啦等等)同int,double 等編譯器內建的資料型別基本相同,只不過結構體是使用者自己定義的資料型別而已,例如: struct student charname[20]; intno; 函式是對資料的一種操作; c++結構體中能包含共用體嗎? 6樓:網友 c++結構體中能包含共用體。 在進行某些演算法的c語言程式設計的時候,需要使幾種不同型別的變數存放到同一段記憶體單元中。也就是使用覆蓋技術,幾個變數互相覆蓋。這種幾個不同的變數共同佔用一段記憶體的結構,在c語言中,被稱作"共用體"型別結構,簡稱共用體。 注:在某些書籍中可能稱之為"聯合體",但是"共用體"更能反映該型別在記憶體的特點。 7樓:龐柳 當然可以。也可以包含其它結構體或類物件,有的結構成員不能固定型別可以用共用體來定義。 c c 結構體的區別 c中的結構體和c 中結構體的不同之處 在c中的結構體只能自定義資料型別,結構體中不允許有函式,而c 中的結構體可以加入成員函式。c 中的結構體和類的異同 一 相同之處 結構體中可以包含函式 也可以定義public private protected資料成員 定義了結構體之後,可... 泠月冰辰 簡單的說 結構體中每一個成員都有自己的記憶體空間。因此,結構體總大小一般情況下等於各成員大小之和 先不考慮記憶體對齊 共用體又叫聯合體,每一個成員都共享記憶體空間。因此,共用體大小等於成員中最大的那個大小。結構體我就不說了,它用處很廣,最常見的是用它儲存一個記錄。例如,學生管理程式中,一個... 豆哥的每一天 c c 類和結構體的的區別 1 結構體基本用在很多資料,需要一個結構體來封裝這些資料。而類的話,是物件導向的思想,可以有很多介面讓人呼叫,私有變數等外部不能呼叫,還有保護型別的變數。2 結構體也可以被認為是一種特殊的類,它不存在任何函式,構造和解構函式也沒有,而且是一個公共的的類。3 ...C 類和結構體有什麼區別,C 中共用體 結構體和類的區別
結構體和共用體在概念與使用上有什麼不同
cc類和結構體的差別,C C 類和結構體的差別