C语言中定义字符串时:
char str1[] = "EFG";
char str2[] = {'A', 'B', 'C', 'D', '\0'}; //末尾一定要加'\0'
第二种方法中一定要加'\0'。
strlen函数、puts函数等都是寻找'\0',以'\0'为字符串的结束标志。
Now, hold on to your hat !
下面代码:
#include <stdio.h>
int main(void)
{
char side_a[] = "EFG";
char dont[] = {'A', 'B', 'C', 'D'}; //没有'\0'
printf("side_a = %p\ndont = %p\n", side_a, dont);
puts(dont);
return 0;
}
输出:
连同side_a中的字符也输出了,dont没有以'\0'结束,就不是字符串的结束,它会向后寻找'\0',直到找到为止,side_a和dont在内存单元中的存储情况如下图所示:
一目了然。