字符

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 码值 :

whisper 的输出是字符还是音素_字符串

所以,如果我们声明一个字符,但是我们用整型输出,就会输出它对应的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";