2014-10-22 57 views

回答

2

C字符串是零終止的。因此,​​被表示爲{ 'a', 'b', 'c', 0 }

因此空字符串只有零。

這也是爲什麼字符串必須始終分配爲大於最大可能長度的一個char的原因。

5

字符串以空終止。一個空字符串包含一個元素,即空終止符本身,即'\0'

char arr[1] = ""; 

等同於:

char arr[1] = {'\0'}; 

你可以想像它是如何存儲在此內存。

2

a[0]是空字符,其可以被稱爲'\0'0

根據定義,字符串是「由第一個空字符終止並且包含第一個空字符的連續字符序列」。對於空字符串,終止空字符是第一個(在索引0處)。

+0

@Bathsheba你是對的,謝謝你的回滾。 – 2014-10-22 07:25:23

2

arr[0] = 0x00;

但是,如果沒有分配任何值一樣

char arr[1];

然後arr[0] = garbage value

2

如果數組被聲明爲char arr[] = "";

在這將激起更多這種情況下sizeof(arr) is 1 and strlen(arr) is 0

但仍然可以通過添加這樣的打印來完成自我分析printf("%d", arr[0]);這樣你就可以自己理解了。

字符串是一個字符序列,在你的情況下,沒有字符出現在「」中。所以它只在arr[0]中儲存'\0'個字符。

0

C字符串是結束與空,所以空字符串「」實際上是「\ 0」,編譯器幫忙做這個,所以 的strlen(「」)等於0,但的sizeof(「」)等於1

+0

所以arr [1]超出範圍。 – sunrain 2014-10-22 12:47:56

相關問題