如何将空字符串存储在char数组中?

时间:2014-10-22 07:07:49

标签: c string

如果我有一个声明为

的数组
char arr[1] = "";

实际存储在内存中的是什么? [0]会是什么?

6 个答案:

答案 0 :(得分:5)

字符串以空值终止。空字符串包含一个元素,即空终止符本身,即'\0'

char arr[1] = "";

相当于:

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

你可以想象它是如何存储在内存中的。

答案 1 :(得分:2)

a[0]是空字符,可以称为'\0'0

根据定义,字符串是“由第一个空字符终止并包括第一个空字符的连续字符序列”。对于空字符串,终止空字符是第一个(在索引0处)。

答案 2 :(得分:2)

C字符串是零终止的。因此,"abc"表示为{ 'a', 'b', 'c', 0 }

空字符串因此只有零。

这也是为什么必须始终将字符串分配为比最大可能长度大一char的原因。

答案 3 :(得分:2)

arr[0] = 0x00;

但是,如果您没有分配任何值,如

char arr[1];

然后arr[0] = garbage value

答案 4 :(得分:2)

如果数组声明为char arr[] = "";

,它会更加激动

在这种情况下sizeof(arr) is 1 and strlen(arr) is 0

但是仍然可以通过添加这样的印刷来完成自我分析printf("%d", arr[0]);这样你就可以自己理解了。

string是一个字符序列,在你的情况下,“”里面没有字符。因此,它仅在'\0'中存储arr[0]个字符。

答案 5 :(得分:0)

C string以NULL结尾,所以空字符串“”实际上是“\ 0”,编译器帮助这样做, 所以strlen(“”)等于0但sizeof(“”)等于1.