2014-10-22 98 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