一、字符常量
'空格键 '----32
‘0’-------48
'A'------65
'a'-----97
b= ' '; //由一对单引号’’括起来的一个字符
b= ''; //错误,不能是0个字符
b= 'AB'; //错误
b = '啊’; //错误,一个中文占据2个字节
b='n'; // 对应110
b='\n'; // 转义字符,换行b='\t'; // 转义字符,相当一一个空格,即tab键
b='\101'; // 即八进制数,101 转化成二进制数 001 000 001,再把二进制转换成十进制数,对应的十进制数是65,也就是字符'A'
b='\x41’; // 十六进制数,41转化成二进制数 0100 0001,再把二进制转换成十进制数,对应的十进制数是65,也就是字符'A'
b='1'; //字符1,49是‘1’ASCII码
b = '9'-'0';//把数字字符转换成对应的数值
表示单引号、双引号、反斜杠
反斜杠----‘\\’
双引号-----' \'' '
单引号-----' \' '
二、字符串常量
字符串:由一对双引号括起来的0个或多个字符
字符串常量不可以改写,想改写用字符数组
内存存储方式
printf("占据的字节数:%d \n", sizeof("abcEFG"));//字符串的尺寸----7
printf("长度:%d\n", strlen("abcEFG"));//字符串的长度----6
printf("占据的字节数:%d \n", sizeof("abc\0EFG"));//字符串的尺寸----8(自动带一个\0)
printf("长度:%d\n", strlen("abc\0EFG"));//字符串的长度----3(遇到第一个\0为止)
printf("占据的字节数:%d \n", sizeof(""));//字符串的尺寸----1
printf("长度:%d\n", strlen(""));//字符串的长度----0
三、字符数组
定义方式:
char str1[5]={'A','B','C','D'};
char str2[5]="ABCD";
char str3[ ]="ABCD";//长度为7:最后自动加\0
char str2[5]="ABCD";
printf("%s\n" , str2) ; --------------------ABCD
str2[1] = 'x’;
printf("%s\n" , str2);--------------------AXCD
//str2 ="HIJK"; //错误,数组名代表数组的首元素地址,是地址常量
/ /str2[5] = "HIJK";//错误,数组越界
四、字符串与指针
char str[10]= "ABCD" ;
char *p; / /char型指针变量
p = str; //p = &str[0];
printf ("%s \n", str);--------------ABCD
printf("%s \n" , p);--------------ABCD
*p='X'; //str[0]='X'
printf("%s \n" , p);--------------XBCD
str[2] +=32;等价于 *(p+2) + =32; 等价于 p[2] + =32;
//大写变小写
printf ("%s \n", str);--------------ABcD
char *p1; / /char型指针变量
p1=“HIJK” ; //指向字符串常量的首地址,不可更改
printf ("%s \n", p1);--------------HIJK
printf ("%s \n", p1+2);------------JK
*p1='Y'; //错误;字符串常量不可以修改
printf ("%s \n", p1); //错误
第5节 字符串的输入输出
单个字符的输出:
char str[10]="ABCD";
char ch='X';printf("%s\n",str) ; //字符串的输出-------%s对应的为地址
printf("%c\n",ch) ; //单个字符的输出--------%c对应的为变量
putchar(ch);//单个字符的输出函数------不会自动换行
单个字符的输入:
scanf("%c",&ch); //单个字符的输入,空格也是单个字符
ch=getchar(); //单个字符的输入,if输入1,认为输入的是字符'1'
字符串的输入/输出:
gets(str);//字符串的输出函数------会自动换行
puts(str);//字符串的输出函数------会自动换行