C字符串变量string:char string []="abc";等价于:char string [4]="abc";
为什么数组长度是4呢?因为C语言编译器会在字符串末尾补上'\0'作为空值得标志,其也独占一字符;
可能你会遇到问题:C语言没有字符数组么?怎么与C字符串区分呢?
这个问题很棒:请注意:char string1 [3]={‘a','b','c'};此string1后面不会有'\0'标志的,所以不是我们所说的C字符串变量。
C字符串变量初始化不用指定长度,C系统内部会自动判断补充,这带了很大的方便,然而在赋值方面却又有了限制:初始化和赋值不能分开:char a_string[10];a_string="hello";这是错的!!!!!!
事情总会有解决方案:用预定义函数来赋值:include<cstring> strcpy(a_string,"hello");遗憾的是此函数不能侦察字符串数组越界的问题,可以用strncpy(a_string,"hello",9);此函数多一个数组最大长度参数。
include<cstring> 中的其他函数:
1.判断字符串是否相等strcmp(str1,str2);
注意此函数的反逻辑,相等返回false(0),不等返回true(非0值);
2.strlen(str);返回字符串的长度;
3.strcat(str1,str2);将str2品接到str1后;
另外C语言中没有bool类型,其实完全可以由int和char来代替;
0对应C++f中德false,非0值对应true