字符
c语言中有很多类型。常见的就是字符
类型了,用关键字char
表识:
char a = '1';
char b = 'a';
char c = 'b';
很简单,用''
单引号,切忌,千万不能用双引号,双引号是来表示字符串的。
输出字符用printf("%c", b)
来格式化表示,%c
表示输出字符:
printf("%c", a); //单个输出
printf("%c%c", b, c); //多个一起输出
由于c语言经常会用到ASCII 码。它是一个数字,字符或者一个符号都会对应一个数字的ASCII 码值 :
所以,如果我们声明一个字符,但是我们用整型输出,就会输出它对应的ASCII码数字了。
char a = 'a'; //a 的ASCII 码是 97
char a = 97;
printf("%c", a);
printf("%d", a);
上面输出啥呢?很显然:a 97
。
同样,我们如果申明一个整型,但是,我们用字符输出,就会输出对应的字符了:
int a = 97; //97 对应 a
int a = 'a';
printf("%c", a); // a
printf("%d", a); // 97
值得注意的是,char
只能存储一个字符,它的取值范围是:ASCII码字符
或者 -128~127的整数
, 所以以下都是错误的:
char c1 = '我'; //汉字占了3个字节。
char c2 = '123';
char c3 = "123";
总结下:你要申明并定义一个字符的话,要么用''
包含一个ASCII的字符,要么是整型(-128~127)。
字符串
其他语言中,基本都会有String
这个类型的变量来表示字符串,但是,c语言中没有,对,是的,你没听错,没有!!!
那怎么办呢。我们可以想想,一个字符串是不是就是一个一个的字符拼凑起来的啊。所以,c语言中的字符串就是很多个char
拼凑起来的。所以还是用char
来申明一个字符串,只不过我们需要加一个[]
, 来标识申明的是字符串。所以,字符串也就是一个字符数组了。
c语言中字符串最大的一个特点就是最后一个字符得是\0
,是一个结束标志符。
char s1[4] = {'a', 'b', 'c', '\0'}; //用数组方式申明,并初始化一起
char s3[] = {'a', 'b', 'c', '\0'} //省略数组个数,自动识别
char s2[4]; //先申明;
s2[0] = 'a'; //再一个一个的初始化。
s2[1] = 'b';
s2[2] = 'c';
s2[3] = '\0';
只能用上面2种方式初始化。下面的是错误的:
char s4[3];
s4 = {'a', 'b', '\0'};
为啥是错误的呢。因为我们已经定义了s4是一个字符串数组了,那么你现在单独用s4
的话,其实是在取地址操作
,等于 &s4[0]
(以后讲数组会具体讲。所以,你肯定是不能把一个数组赋值给一个指针地址的。
我们精简省略点写,将{}
也去掉,用""
双引号替代,这种方式,c语言会自动再后面加一个\0
char s5[] = "abc";
输出字符串就用%s
:
printf("字符串s4:%s", s5); // 输出 => 字符串s4:abc
注意的是,在声明字符串的时候,一定要带上[]
, 不然就是一个字符了,一个字符只能装一个字节,所以下面这种方式是错误的:
char s6 = "qwer";