為何當結構體內無資料元素,結構體指標CLASS的位元組預設是1,而不是

2022-04-18 01:21:50 字數 643 閱讀 3763

1樓:歲月哪曾斑駁

別聽那個說指標的胡扯,就算是指標也要4個位元組呢。。。這個是c++編譯器自動新增的「啞」成員的大小。

lz應該是用的vc++吧,而且可能版本不信或者是相容舊版的。同樣這段**,用大部分的c編譯器得到的結果是0,c++的編譯器是1。不信可以用gcc和g++分別編譯試試,當然其他c++編譯器你可能要改下**,void main是不行的。

這個涉及到c++設計時的規範,以及c++和c中結構體的不同。c++中的結構體不是c中的結構體,而是被當成了類來處理,保留struct關鍵字是為了相容c語言。這樣,其實你把struct改成class,結果也是一樣的也是1。

c++設計之初為了更好的物件導向,就規定:每個物件必須有一個相互區別的記憶體地址。所以對於空結構體或類,c++編譯器會強插一個1位元組的「啞」成員。

不然,你可以想像,如果存在沒有「啞」成員的類,它例項化了之後不久和它後面任意新的元素一個地址了麼,c++不允許這種情況發生。

但是,一般來說,這個在c語言中是可以存在的,這是它和c++的不一樣。c會把這樣的結構體等同為void。(也有可能有很少一部分非常非常嚴格的c編譯器會直接報錯,不允許定義這樣的結構體。)

2樓:

這個是硬性規定的 指標" * "在記憶體中都佔一個位元組

瓊瑤劇大多三觀不正,為何當年如此火爆

因為瓊瑤劇夠狗血,有戲劇衝突。又是講愛情的,太符合女人的瑪麗蘇幻想了。三觀不正怎麼了,瑪麗蘇不需要三觀,就是看個電視劇,不要上綱上線。它特別火爆,說明它被大多數人接受,代表了一大部分人的社會心理。但是現在觀眾看過了太多的套路劇,老的套路已經並不能吸引人了。畢竟市場娛樂文化匱乏的時期是不會挑食的,現在...

關羽被東吳俘虜後,孫權為何當場將其砍頭了

關羽被孫權俘虜之後,立馬就被孫權砍首了,孫權之所以這樣做歷史上有兩種說法,第一種說法是關羽和孫權之間的仇恨太大,第二種說法就是因為關羽說了兩個字激起了孫權的怒火,才導致自己被殺了。關羽是劉備麾下的一名大將,戰功赫赫,幫助劉備打下了蜀漢的江山,最後關羽被孫權所擒,而且被捉住之後立刻被殺了。對於孫權的這...

女性幹過並不比男性少,為何當領導的女性要比男性少

比如說眼界魄力都不如男性,在一個說女性的話最後還是迴歸於家庭。因為女性一般比男性的威嚴要少點,在管理方面魄力度不夠大,當然有一少部分女性還是有這種管理天分的,所以相對來說當領導的女性要比男性少,我覺得最主要的是女人生完孩子以後,好多人都是心繫孩子了,精力不會那麼集中了,都是把精力全部放到孩子身上,對...