1.C语言中没有专用的字符串类型
所以只能通过字符数组来模拟字符串变量
2.'\0' 字符表示0元素,对应的整数是0 ,\表示转义
而'0'字符对应的整数位48
int main(){
printf("%d\n",'\0'); //0
printf("%d\n",'0'); //48
return 0;
}
3.当字符数组中存在0元素时,可当作字符串使用,字符数组中的0元素表示了一个字符串的结束,字符数组中的元素不一定是字符串中的元素
例如:char ss[]={'D','.','\0','.','\0'}这个字符串为"D.",'.'虽然是字符数组中的元素,但不是字符串中的元素
4.字符串分为字符串常量和字符串变量,常量是由""引起来的,变量是由字符数组模拟的
5.数组中后面隐藏了0元素,即'\0'
int main(){
char dt[]="abcd";
char name[]={"efg"}; //等价于 char name[]="efg";
int ds=sizeof(dt);
int ns=sizeof(name);
printf("dt=%s\n",dt); //abcd
printf("name=%s\n",name); //efg
printf("dt size=%d\n",ds); //5
printf("name size=%d\n",ns); //4
return 0;
}
打印dt数组为:97 98 99 100 0
当dt作为字符串时:长度为:4
int i=0;
while(dt[i]!=0)
i++;
printf("dt length=%d\n",i); //4
结论:字符串的长度小于字符数组大小,一个字符数组不一定是一个字符串,而一个字符串一定是一个字符数组。
字符串变量的值是可以改变的
char name[]={"efg"};
name[0]='x';
name[1]='y';
name[2]='z';
printf("name=%s\n",name); //xyz
6.C语言中没有对字符串的专用运算操作
但是字符串工具包"string.h"中有对应的操作
strlen(s)->获取字符串长度
strcpy(s1,s2)->将s2中的字符复制到s1
strcat(s1,s2)->将s2追加到s1后面,即s1<-s1+s2
strcmp(s1,s2)->比较s1和s2是否相等,相等时为0
#include <stdio.h>
#include <string.h>
int main(){
char s[10]="abcd";
int size=sizeof(s);
int len=strlen(s);
printf("size=%d\n",size); //10
printf("len=%d\n",len); //4
return 0;
}
int main(){
char s[10]="abcd";
char d[]="efg";
printf("s=%s\n",s);
printf("len=%d\n",strlen(s));
strcpy(s,d);
strcat(s,d);
printf("s=%s\n",s); //efgefg
printf("len=%d\n",strlen(s)); //6
return 0;
}