1-字符型
char c='a';//C 语言中,使用单引号把字符引起来构成字符常量,双引号"abc"是字符串常量也可以用字符对应的ASCII码赋值,如下:
char c=97;
char c='good';得到的是最后一个字符 即'd'
C语言是ASCII码的形式存储字符型变量的,存储形式与整数类似,所以字符型和整数(范围0-255)之间可以通用。
2-字符串
II-长度(占用内存字节)
在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,C语言规定了一个“字符串结束标志”,以字符'\0'代表。如果有一个字符串,其中第10个字符为'\0',则此字符串的有效字符为9个。也就是说,在遇到第一个字符'\0'时,表示字符串结束,由它前面的字符组成字符串。
系统对字符串常量也自动加一个'\0'作为结束符。例如"C Program”共有9个字符,但在内存中占10个字节,最后一个字节'\0'是系统自动加上的。(通过sizeof()函数可验证)
3-strlen 和sizeof区别
4-两种初始化的长度对比
5-字符串的表示形式
在C语言中,可以用两种方法表示和存放字符串:
(1)用字符数组存放一个字符串
char str[ ]="I love China";
(2)用字符指针指向一个字符串
char* str="I love China";
C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放字符串常量,程序在定义字符串指针变量str时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给str。
char* a ="helko";
char* s[]={"how","are","you"};
int lenthS=0;
char ss[100]="\0abcd";
printf("a[2]=%c\n",*(a+2));//a[2]=l
printf("%s\n",a+1);//elko
lenthS = sizeof(s)/sizeof(char*);
printf("lenthS=%d\n",lenthS);//3
printf("%s\n",*(s+1));//are
printf("lenth of SS:%d\n",strlen(ss));//0
return 0;
}
6-字符串gets 和 scanf()的区别
char string[15];
gets(string); /*遇到回车认为输入结束*/
scanf("%s",string); /*遇到空格认为输入结束*/
所以在输入的字符串中包含空格时,应该使用gets输入;
7-字符串转换函数int main(){
char a[]="zbc";
char b[]="ASD";
printf("before:%s\n",a);
printf("Uper:%s Lower:%s\n",strupr(a),strlwr(b));
printf("after;%s\n",a);
return 0;
}