2016-01-17 48 views
2

我需要知道多少字節將這個數組初始化佔據:多少字節將一個字符串佔用,少信

char s[10] = "test"; 

會不會是10個字節或因"test" + "\0" 5個字節?

+0

無論如何,分配的內存是10個字節,獨立的如何初始化,誹謗初始化等。前5個字節是含義(測試+ \ 0),其餘無意義(''\ 0''或其他)。 –

+0

爲什麼要擔心5個字節? –

回答

2

只是爲了澄清事情了一下

char s[10] = "test"; 

這裏s將佔據10個字節,因爲你已經明確地供應規模。

OTOH,像

char s[ ] = "test"; 

s的定義將佔用5個字節,作爲陣列的大小將基於所提供的初始值設定被確定(4個元件加上一個空終止符。)

如果是char數組,第二個數組被認爲是更好的方法,因爲有時它可以通過在定義大小時忘記計算空終止符的空間來避免麻煩。

考慮的情況下,

char arr[5] = "Hello"; 

這裏,arr的大小爲5,是不是終止。但是如果使用

char arr[ ] = "Hello"; 

編譯器會自動確定包括空終止符的大小。因此,arr的大小爲6,幷包含空終止符。

0

在你的問題中,實際上有兩個單獨的問題。第一個對應於原來的問題

多少字節將一個字符串佔用,少信

,第二個是在原來的問題

的身體初始化稱號

多少字節將這個陣列中佔據:

char s[10] = "test"; 

第一個問題的答案聽起來像字符串恰好佔據了數組的5個元素。這是字符串佔據陣列

s[0] = 't', s[1] = 'e', s[2] = 's', s[3] = 't', s[4] = '\0' 

範圍[5, 9]陣列的所有其他字符將被零'\0'

初始化的以下內容和答案的第二個你的問題聽起來像數組佔據的尺寸恰好等於10 * sizeof(char),這正好是10 bytes,因爲sizeof(char)始終等於1

如果將改爲寫

char s[] = "test"; 
     ^^ 

則陣列的大小將等於字符串文字(包括終止零)的大小,該大小是5個字符。

相關問題