回答
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