西紅柿生吃還是熟吃好?原來區別這麼大

時間 2021-06-03 16:29:22

1樓:Xi Yang

這個是GNU的C語言擴充套件吧?本來就不是合法的C++寫法。

至於未初始化的字串變數,列印出來的就是未初始化的記憶體的內容,什麼東西都有可能。也有可能一直沒遇到0結尾,然後一直讀出當前程序的記憶體範圍,然後被作業系統殺死。

2樓:大妖精

首先是disclaimer,這種寫法是完全的platform-dependent的非標準行為,為什麼其他回答裡都解釋了,我說一說具體得到第二種結果的原理。

由於b定義為乙個長度未知的陣列,他在類結構裡沒有佔任何空間,這個時候類的排布很像乙個union,a和b的首位址是相同的。你先cin>>a得到[1,0,0,0](每項是乙個位元組,big endian),然後cin>>b得到[97,0,0,0](注意你的輸入被解讀成」a」)。

所以最後的輸出是97和a。

3樓:大鈾子

答主的編譯器應該是gcc/g++,這種編譯器能支援部分C99特性,其中包括伸縮陣列。伸縮陣列是指乙個結構的最後乙個成員是不指定長度的陣列,在申請物件時要額外申請該陣列的空間,否則系統不會給它分配任何空間。伸縮陣列只能為結構的最後乙個成員,任何結構只能有乙個伸縮陣列。

4樓:任傑

在c99中有乙個叫做柔性陣列的東西,允許結構體的最後乙個成員是未知大小陣列。C++相容C

手機碼字不便,具體原因請題主使用任何工具查詢一下柔性陣列

5樓:

分配記憶體空間時,計算機按順序分配記憶體空間。未初始化的、沒有定長的陣列無法直接分配確定的記憶體空間,編譯器在這個過程中做了什麼是不可預期的。

具體分析程式行為,a在b之前賦值,則a有確定的位址空間,b不確定,但肯定和a不重疊,因此ab的內容可以賦值(不是正確賦值,顯然地b是沒有乙個確定的結尾的);而b在a前賦值,b的位址不確定,但a肯定是要連續鋪在記憶體裡的,因此形成了類似Union的結構,ab共用了一段內容。

6樓:

你去給b賦值的行為本身就是UB的。b的型別是char [0],這個型別一般用於一些奇淫技巧,比如:

struct

sData

你用乙個字元去給乙個char [0]的型別賦值,本身就是乙個錯誤的行為。

char c 這種寫法一般要使用字串來初始化:

charc

="hello world"

;沒用字串初始化的話,編譯器會自動轉換為char c[0]。

7樓:tearshark

char b[any number];

然後使用cin>>b都是錯誤的。

你既然用了cin,說明用了C++,而不僅僅是C。既然用C++了,老老實實用std::string。

8樓:張東公升

char b; 這個類成員變數宣告是錯誤的。

假如你想要這個變數儲存乙個字元你應該宣告 char b而不是char b

假如你想要這個變數儲存乙個字串宣告char陣列時應當給定陣列元素數,例如:char b[10]。

生吃西紅柿怎麼吃好吃

雲小新 材料西紅柿2個150克,白糖30克 做法1 將西紅柿去皮,每個對切為6塊 2 加白糖在大碗中拌勻 3 分別盛入兩個小碟即成。 海的那邊是山 當然是一口咬掉西紅柿的頂部然後邊捏邊吸將柿汁吸乾最後嚼掉果肉這樣吃了。注意 吸西紅柿汁是靈魂步驟,一定要將每一面都吸乾!有些西紅柿裡面是空心的,就很難吃...

南瓜子有什麼功效和禁忌?生吃還是熟吃好?

憑窗聽夜語 一 功效 1解毒南瓜子內含有維生素和果膠,果膠有很好的吸附性,能粘結和消除體內細菌毒素和其他有害物質,如重金屬中的鉛 汞和放射性元素,能起到解毒作用。2 保護胃粘膜 促消化 針對保護胃粘膜 南瓜所含果膠還可以保護胃膠道粘膜,免受粗糙食品刺激,促進潰瘍癒合,胃病患者非常適合食用南瓜子。針對...

胡蘿蔔生吃還是熟吃營養價值高?

雪揚 這個問題很有意思的 即使蔬菜中含豐富的胡蘿蔔素,也不一定能為人體所吸收利用。蔬菜中的胡蘿蔔素,含在由纖維素構成的人體無法消化的細胞壁中。胡蘿蔔素無法溶解於水中,因此無法通過細胞壁。必須經過切碎 煮熟及咀嚼的方式將細胞壁破壞,才能讓它進入血液之中。生吃胡蘿蔔,只能吸收其中所含胡蘿蔔素的1 經過煮...