回答
C字符串是零終止的。因此,被表示爲{ 'a', 'b', 'c', 0 }
。
因此空字符串只有零。
這也是爲什麼字符串必須始終分配爲大於最大可能長度的一個char
的原因。
字符串以空終止。一個空字符串包含一個元素,即空終止符本身,即'\0'
。
char arr[1] = "";
等同於:
char arr[1] = {'\0'};
你可以想像它是如何存儲在此內存。
a[0]
是空字符,其可以被稱爲'\0'
或0
。
根據定義,字符串是「由第一個空字符終止並且包含第一個空字符的連續字符序列」。對於空字符串,終止空字符是第一個(在索引0處)。
arr[0] = 0x00;
但是,如果沒有分配任何值一樣
char arr[1];
然後arr[0] = garbage value
如果數組被聲明爲char arr[] = "";
在這將激起更多這種情況下sizeof(arr) is 1 and strlen(arr) is 0
。
但仍然可以通過添加這樣的打印來完成自我分析printf("%d", arr[0]);
這樣你就可以自己理解了。
字符串是一個字符序列,在你的情況下,沒有字符出現在「」中。所以它只在arr[0]
中儲存'\0'
個字符。
C字符串是結束與空,所以空字符串「」實際上是「\ 0」,編譯器幫忙做這個,所以 的strlen(「」)等於0,但的sizeof(「」)等於1
所以arr [1]超出範圍。 – sunrain 2014-10-22 12:47:56
- 1. C:如何將字符串存儲到「char * myArray [100]」數組中?
- 2. 如何將字符串存儲在C中的char * s []中?
- 3. 在char指針數組中存儲字符串的錯誤
- 4. 將字符串存儲在不帶空字符的字符數組中
- 5. 將字符串的地址存儲在字符串數組中
- 6. 將部分字符串存儲在字符串數組中
- 7. 如何將字符串值存儲在Java數組中的字符數組?
- 8. 將字符串存儲到數組中
- 9. 將字符串存儲到數組中?
- 10. 如何在MySQL CHAR字段中存儲空格字符?
- 11. 如何將字符串存儲在數組中?
- 12. 如何將字符串存儲在GO數組中?
- 13. 如何將數組列表項存儲在字符串中
- 14. 如何將字符串存儲在數組或序列中?
- 15. 如何在char數組中存儲'\ 0'
- 16. 如何將字符串生成的子串存儲到字符串數組中?
- 17. 如何將字符串中存儲的數據轉換爲字符串數組
- 18. 如何將int數組值存儲在char數組中?
- 19. 將空格字符串存儲到數組Bash中
- 20. 如何存儲數組/字符串
- 21. 如何將數據字符串存儲到數組中
- 22. 如何在C/C++中將字符串修改爲char數組?
- 23. 如何在ActionScript 3中將字符串轉換爲char數組?
- 24. 將char轉換爲char無效* - 將字符串數組中的char複製到另一個字符串數組
- 25. 在SharedPreferences中存儲字符串數組
- 26. MATLAB將字符串存儲爲數組
- 27. 將char *值存儲到無符號char **數組中
- 28. 如何將char數組轉換爲字符串數組?
- 29. 如何在char數組中存儲空間?
- 30. 如何在字符串數組中存儲組成員
@Bathsheba你是對的,謝謝你的回滾。 – 2014-10-22 07:25:23