整理4。
2.4字符型
用法:字符型变量用于显示单个字符。
2.4.1.声明char类型变量
char类型变量的声明方式与其他类型变量声明方式相同。如:
char ch ;
char itable;
char age;等等
以上三个char类型的变量:ch,itable,age .
2.4.2.字符常量和书写规则
如果要把一个字符常量初始化为字母a,不必背下ASCII码,利用计算机语言可以将初始化为字母a赋予给ch:char ch = 'a';
在C语言中,用单引号括起来的单个字符称为字符常量。编译器一发现“a”,就将其转换成相应的代码值。所以,单引号必不可少。如下举例:
char ch ;/*声明一个char类型的变量*/
ch = 'a';/*为其赋值,正确*/
ch = a;/*错误!这里的a是一个变量*/
ch = “a”/*错误!这里的a是一个字符串*/
2.4.3.打印字符
printf()函数用%c指明待打印的字符,一个字符变量实际上被储存为1字节的整数值。因此,如果用%d转换说明打印char类型变量的值,打印的是一个整数。而%c转换说明告诉printf()打印该整数值对应的字符。如下:
2.4.4.对应的ASCII码值查看
像“a”字母ASCII码所对应的“97”虽然是int类型,但是它在char类型能表示的范围,又由于用%d转换说明打印char类型变量的值,即可输出打印出“a”所代表的ASCII码。
2.5转义字符
作用:用于表示一些不能显示出来的ASCII字符
像之前用到的\n就是其中之一。
转义序列 | 含义 |
---|---|
\a | 警报(ANSIC) |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\\ | 反斜杠 |
\' | 单引号 |
\" | 双引号 |
\? | 问号 |
\0oo | 八进制值 |
\xhh | 十六进制值 |
2.6布尔类型bool
作用:布尔数据类型表示真假。
bool类型只有两个值:
- true--真(本质是1)
- false--假(本质是0)
bool类型占1字节大小
示例:
2.7字符串类型
简介:字符串是一个或多个字符的序列,如:
“Come and learn strings with Alika-snowr today!”
双引号不是字符串的一部分。双引号仅仅告诉编译器它括起来的是字符串,正如单引号括起来的表示字符一样。
作用:用于表示一串字符。
2.7.1.char类型数组和null字符
C语言中并没有专门用于储存字符串的变量类型,字符串都被储存在char类型的数组中。数组由连续的储存单位组成,字符串中的字符被储存在相邻的储存单位中,每一个单位储存一个字符。
(在JavaScript的学习中,就提到数组的学习。)
第一天所学习的printf函数中,确实可以打印出像名字一样的字符串,但是如果想重复利用这个,就需要多次打印相同的字符串,为了简化,我们则需要用到char类型。
那么,什么是数组?
可以把数组看作是一行连续的多个存储单元。如果要存储5个单元(元素)可以写作为:char name[5];
字符串看上去比较复杂!必须先创建一个数组,把字符串中的字符逐个放入数组,还要记得在末尾加上一个\0,不过计算机可以自行处理这一细节。
2.7.2.strlen()函数
昨天提到sizeof运算符,它以字节为单位给出对象的大小,而strlen()函数给出字符串中的字符长度。在使用程序利用strlen()函数时要在开头添加一个头文件--#include<string.h>该头文件包含多个与字符串相关的函数原型,包括strlen()。
如果没有加上#include<string.h>则会出现以下情况:
正确情况下则是:
以上看出strlen()函数打印出来的“abc”字符长度显示为3,并不包括\0。因为\0是作为字符串结束的标准而存在,所以求长度的时候并不算在里面。
2.7.3.使用字符串
scanf()函数能让用户可以与程序交流,scanf()是输入函数,是最多才多艺的函数。
结合sizeof()和strlen()函数看区别:
分析:
1.sizeof运算符报告name数组有40个储存单位,但是只有前5个单位用来储存Alika,所以strlen()得出的结果是5。Name数组的第6个单元存储空字符,strlen()并未将其记入。
2.对于PRAISE用strlen()得出的也是字符串中的字符数(包括空格和标点符号)。然而sizeof给运算符给出的数更大,是因为把字符串末尾不可见的空字符也计算在内。
3.之前提到sizeof运算符的返回类型添加了%d转化说明这对strlen()同样适用。
4.昨天提到的sizeof运算符中有用圆括号,但是这里没有用。何时使用圆括号取决于运算对象是类型还是特定量。运算对象是类型时,圆括号必不可少,但对于特定量圆括号可有可无。
2.8常量和C预处理器
有时,在程序中是要使用到常量的。例如计算圆的周长:C=3.14159×d。
这里的常量3.14159代表的是著名的常量π。在该例中输入实际值便可以使用这个常量。然而这种情况使用符号常量会更好,也就是说使用下面的语句会更加准确,计算机会用实际值完成替换:C=π×d
为什么使用符号常量会更好呢?
如果阅读一个很长的程序,用符号常量代替常量语句所表达的含义将更加清楚。再者,程序中多处使用一个常量,如果这个只需要改变,从程序中一一找到它再改动太过复杂。如果程序使用符号常量,这只需要改变符号常量的定义,不需要再从程序中查找常亮的地方一一改正。
为了解决这个问题的做法如下:
1.先声明一个变量,然后将该变量设置为所需的常量。
2.C预处理器,预处理器也可以用来定义常量,只需要在程序顶端添加一行#define。
格式是:#define 符号常量名 符号常量的值(其中没有等于号)
其中符号常量名最好全部用大写,因为用大写表示符号常量是c语言的一贯传统。只要在程序中看到全大写的名称,就会立刻知道这是一个符号常量。
2.8.1.const限定符
作用:用于限定一个变量为只读。
其意思为:AGE在程序中不可更改,只为18.
2.9printf()函数和scanf()函数
2.9.1.printf()函数
printf()函数打印数据的指令要与数据的类型相匹配,例如之前所遇到的%d,%e,%f等还有%s表示字符串,百分号的打印是%%
2.9.2.scanf()函数
scanf()函数是输入函数的一种,是最通用的一个。因为它可以读取不同格式的数据。
规则:
- 如果要使用scanf()函数读取基本变量类型的值,在变量之前要加上一个&
- 如果用scanf()函数把字符串读入字符数组中不要使用&
示例: