字符串诚然是字符数组,于字符串考虑我们是这样初始化的:
编译器对上面的处理是在最末加一个 '\0' , 一些字符串函数也是依此来判定字符串结尾,因此 strlen() 函数对上述求值为 5, 而求其大小sizeof(s1) == 6.
上述是字符串初始化的经典形式。是标准所推荐的安全初始化。
若是我们是依普通数组之方式初始化:
于此,s3 只是一个盛放着散乱的字符的数组, 故sizeof( s3 ) == 5, 但对字符串操纵的函数却出乎意料, strlen () 函数可能所得的值要大于5.
而改成下列, 就变成了字符串了:
而这与下列是等价的:
而此处编译器帮你完成了尾部加 '\0'.
所以说,
确切的说是:
即字符串是字符数组的子集。字符串是特殊的字符数组, 是一个尾部带 '\0' 小尾巴的特殊字符数组,而这个小尾巴是由编译器来帮你完成。