先看两个小程序
运行,输出结果为:
这说明什么问题?说明用常量进行初始化的字符数组,系统会默认在字符串的最后添加'/0'标志;
因此,上面的str[3] 就已经是 '/0' 了!
再看下面这个程序:
这样的运行结果是:乱码. 表明str[0-3]已经被初始化0,而str[4]并没有默认初始化'/0';
分析:这说明什么问题呢?
1. str[5] = "abc"; //这说明编译器在处理字符串(常量)abc的时候,默认后面加了 '/0';
2. 如果用memset()进行初始化的话,编译器是不会默认加'/0'的,只能执行库函数memset();
3. 对于第二种情况,使用字符串函数的时候需要慎重,因为末尾并没有结束符 '/0';稳妥的方法加上这一句:
str[4] = '/0'; 这样,就是正常的字符串了!