C 空字符串如何存储在字符数组中?
如果我将数组声明为C 空字符串如何存储在字符数组中?,c,string,C,String,如果我将数组声明为 char arr[1] = ""; 内存中实际存储了什么?[0]将是什么?字符串以null结尾。空字符串包含一个元素,即null终止符本身,即'\0' char arr[1] = ""; 相当于: char arr[1] = {'\0'}; 您可以想象它是如何存储在内存中的。字符串以null结尾。空字符串包含一个元素,即null终止符本身,即'\0' char arr[1] = ""; 相当于: char arr[1] = {'\0'}; 您可以想象它是如何存储在内
char arr[1] = "";
内存中实际存储了什么?[0]将是什么?字符串以null结尾。空字符串包含一个元素,即null终止符本身,即
'\0'
char arr[1] = "";
相当于:
char arr[1] = {'\0'};
您可以想象它是如何存储在内存中的。字符串以null结尾。空字符串包含一个元素,即null终止符本身,即
'\0'
char arr[1] = "";
相当于:
char arr[1] = {'\0'};
您可以想象它是如何存储在内存中的。
a[0]
是空字符,可以称为'\0'
或0
根据定义,字符串是“由第一个空字符终止并包括第一个空字符的连续字符序列”。对于空字符串,终止的空字符是第一个(在索引0处)。
a[0]
是空字符,可以称为'\0'
或0
根据定义,字符串是“由第一个空字符终止并包括第一个空字符的连续字符序列”。对于空字符串,终止的空字符是第一个字符(在索引0处)。C字符串以零结尾。因此,
“abc”
表示为{a',b',c',0}
因此,空字符串只有零
这也是为什么必须始终将字符串分配为比最大可能长度大一个字符的原因。C字符串以零结尾。因此,
“abc”
表示为{a',b',c',0}
因此,空字符串只有零
这也是为什么必须始终将字符串分配为比最大可能长度大一个字符的原因。
arr[0]=0x00代码>
但是,如果未指定任何值,如
char-arr[1]代码>
然后arr[0]=垃圾值arr[0]=0x00代码>
但是,如果未指定任何值,如
char-arr[1]代码>
然后arr[0]=垃圾值
如果数组声明为char arr[]=”,则会引起更多的骚动代码>
在这种情况下,sizeof(arr)为1,strlen(arr)为0
但仍然可以通过添加如下打印来进行自我分析printf(“%d”,arr[0])代码>以便您可以自己理解
字符串是一个字符序列,在您的情况下,在“”中没有字符。因此,它只在arr[0]
中存储'\0'
字符,如果将数组声明为char arr[]=”,则会引起更多的骚动代码>
在这种情况下,sizeof(arr)为1,strlen(arr)为0
但仍然可以通过添加如下打印来进行自我分析printf(“%d”,arr[0])代码>以便您可以自己理解
字符串是一个字符序列,在您的情况下,在“”中没有字符。因此它只在arr[0]
中存储'\0'
字符,C字符串以NULL结尾,因此空字符串“”实际上是“\0”,编译器帮助执行此操作,
因此strlen(“”)等于0,但sizeof(“”)等于1。C字符串以NULL结尾,因此空字符串“”实际上是“\0”,编译器帮助执行此操作,
所以strlen(“”)等于0,但sizeof(“”)等于1。所以arr[1]超出范围。所以arr[1]超出范围。