头文件提供字符串处理函数,如strcpy、strcat、strlen、strcmp等。
要想使用特定的库函数,我们必须要在代码的开头用 #include 包含对应的头文件。
3.数据类型和变量
3.1 数据类型介绍
C语⾔提供了丰富的数据类型来描述⽣活中的各种数据。
使⽤整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述小数。
所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作
数据。
类型分类:
- char //字符类型
- short //短整型
- int //整型
- long //长整型
- long long //更长的整型
- float //单精度浮点数
- double //双精度浮点数
复制代码
3.2 各种数据类型的长度
每⼀种数据类型都有自己的⻓度,使⽤不同的数据类型,能够创建出长度不同的变量,变量长度的不同,存储的数据范围就有所差异。我们可以使用操作符sizeof来求出不同数据类型所占用的内存大小。
3.2.1 sizeof 操作符
sizeof 是⼀个专门用来计算数据类型⻓度的操作符,单位是字节。
sizeof 操作符的操作数可以是类型,也可是变量(计算变量的类型的长度)或者表达式(计算表达式结果的类型长度)。
- sizeof( 类型 )
- sizeof(表达式)
- sizeof 表达式
- sizeof(变量)
- sizeof 变量
复制代码
注:sizeof 的操作数如果不是类型,是表达式或者变量的时候,可以省略掉后边的括号的(从这一点就可以看出sizeof不是函数,因为函数是不能删去后面紧跟着的括号的)。
sizeof 后边的表达式是不真实参与运算的,根据表达式结果的类型来得出大小。
下面我们使用sizeof操作符来计算各数据类型的长度:
- #include <stdio.h>
- int main()
- {
- printf("%zd\n", sizeof(char));
- printf("%zd\n", sizeof(short));
- printf("%zd\n", sizeof(int));
- printf("%zd\n", sizeof(long));
- printf("%zd\n", sizeof(long long));
- printf("%zd\n", sizeof(float));
- printf("%zd\n", sizeof(double));
- return 0;
- }
复制代码
从sizeof操作符计算出来的结果中可以看出短整型short(2字节),整型int(4字节)和更长的整型long long(8字节)在内存中所占用的大小是不一样的。
为什么都是用来表达整数的数据类型要划分出这么多种长度不同的数据类型呢?
几种整数类型的长度不一样,所表达的整数范围就不一样。短整型short所表达的整数范围比较小,整型int所表达的整数范围适中,更长的整型所表达的整数范围最大。
如果我们只有int一种整数类型,那么我们用int定义一个变量,然后使用这个变量去存储一个较小的整数,这时我们就会发现内存空间被浪费;但如果使用这个变量去存储一个很大的整数,又发现它存不下。
所以为什么会存在这么多种整数类型的答案逐渐清晰,为了方便程序员根据不同的整数大小灵活创建不同类型的整型变量,为了使内存空间得到充分利用。
3.3 变量的创建
了解清楚了数据类型,我们使⽤类型做什么呢?类型是⽤来创建变量的。
什么是变量呢?C语⾔中把经常变化的值称为变量,不变的值称为常量。
变量创建的语法形式:
- 数据类型 变量名;
- char bbc;
- int age;
- double weight;
复制代码
变量名的命名规则:
(1)变量名只能由字母、数字和下划线组成。
(2)变量名不能以数字开头,第一个字符必须是字母或下划线。
(3)变量名区分大小写,因此"test"和"Test"被视为两个不同的变量名。
(4)变量名不能是C语言中的关键字,如break、case、char、int、float等。
变量在创建的时候就给⼀个初始值,就叫初始化:
- char bbc = 'a';
- int age = 18;
- double weight = 56.0;
复制代码
4.关键字介绍
C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键
字。
C语言的32个关键字如下:
- auto break case char const continue default do double else enum
- extern float for goto if int long register return short signed sizeof
- static struct switch typedef union unsigned void volatile while
复制代码
注:我们定义的用户标识符不能与关键字相同,否则会出现错误。
可以将关键字理解为具有特殊含义的标识符,它们已经被系统使用,我们不能再使用了。
5.语句和语句分类
C语言的代码是由⼀条⼀条的语句构成的,C语⾔中的语句可为以下五类:
• 空语句
• 表达式语句
• 函数调⽤语句
• 复合语句
• 控制语句
5.1 空语句
空语句是最简单的,⼀个分号就是⼀条语句,是空语句。如下所⽰:
- #include<sydio.h>
- int main()
- {
- ;//空语句
- return;
- }
复制代码
空语句,⼀般出现的地⽅是:这里需要⼀条语句,但是这个语句不需要做任何事,就可以写⼀个空语
句。
5.2 表达式语句
表达式语句就是在表达式的后边加上分号。如下所示:
- #include<sydio.h>
- int main()
- {
- int a = 5;
- int b = 10;
- int c = 0;
- b = a + b;//表达式语句
- c = a * b;//表达式语句
- return;
- }
复制代码
5.3 函数调用语句
函数调⽤的时候,也会加上分号,就是函数调⽤语句。
- #include<sydio.h>
- int add(int x, int y)
- {
- int d = x + y;
- return d;
- }
- int main()
- {
- int a = 5;
- int b = 10;
- int c = add(a,b);//函数调用语句,调用的是用户自定义函数
- printf("%d",c);//函数调用语句,调用库函数
- return;
- }
复制代码
5.4 复合语句
复合语句其实就是代码块,成对括号中的代码就构成⼀个代码块,也被称为复合语句。
- #include <stdio.h>
- int add(int x, int y) //函数的⼤括号中的代码构成了复合语句
- {
- int d = x + y;
- return d;
- }
- int main()
- {
- int a = 5;
- int b = 10;
- int c = add(a,b);
- if(c>10)//if语句的⼤括号中的就是复合语句
- {
- int i = c % 10;
- printf("%d",i);
- }
- else
- printf("%d",c);
- return;
- }
复制代码
5.5 控制语句
控制语句⽤于控制程序的执⾏流程,以实现程序的各种结构⽅式(C语⾔⽀持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语⾔有九种控制语句。
可分成以下三类:
(1). 条件判断语句也叫分⽀语句:if语句、switch语句;
(2). 循环执⾏语句:do while语句、while语句、for语句;
(3). 转向语句:break语句、continue语句、goto语句、return语句。
6.注释是什么?为什么写注释?
注释是对代码的说明,编译器会忽略注释,也就是说,注释对实际代码没有影响。 注释是给程序员⾃⼰,或者其他程序员看的。
好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释。当然不写注释可能会让后期阅读代码的⼈抓狂。
6.1 注释的2种形式
C 语⾔的注释有两种表示方法。
6.1.1 /**/ 的形式
第⼀种方法是将注释放在 /**/ 之间,内部可以分行,也就是可以注释多行。
实际在代码中应用:
(1)在此处注释起到的作用是对代码进行一些必要的补充说明,便于代码的阅读及理解。
- #include <stdio.h>
- int main()
- {
- printf("%15d\n", 0XABCDEF);/*printf可以使用使用格式控制串“% md”输出域宽为m的十进制整数。*/
- return 0;
- }
复制代码- #include <stdio.h>
- int main()
- {
- printf("%15d\n", 0XABCDEF);
- /*printf可以使用使用格式控制串“% md”输出域宽为m的十进制整数。*/
- return 0;
- }
复制代码
(2)因为编译器在编译代码过程中会忽略注释,所以我们也可以利用注释来隐藏一些暂时不需要用到的代码段。当我们再次需要用到这些代码段时,只需要把注释符号删去即可。
- #include <stdio.h>
- int main()
- {
- int a, b;
- scanf("%d", &a);
- /*while (a)
- {
- b = a % 10;
- a = a / 10;
- printf("%d", b);
- }*/
- return 0;
- }
复制代码
6.1.2 // 的形式
第二种写法是将注释放在双斜杠 // 后面,从双斜杠到行尾都属于注释。这种注释只能是单行,可以放在行首,也可以放在⼀行语句的结尾。这是 C99 标准新增的语法。
实际在代码中应用:
(1)在此处注释起到的作用是对代码进行一些必要的补充说明,便于代码的阅读及理解。
- #include <stdio.h>
- int main()
- {
- printf("%15d\n", 0XABCDEF);//printf可以使用使用格式控制串“% md”输出域宽为m的十进制整数。
- return 0;
- }
复制代码- #include <stdio.h>
- int main()
- {
- printf("%15d\n", 0XABCDEF);
- //printf可以使用使用格式控制串“% md”输出域宽为m的十进制整数。
- return 0;
- }
复制代码
(2)用注释来隐藏一些暂时不需要用到的代码段。当我们再次需要用到这些代码段时,只需要把注释符号删去即可。注意与使用/**/注释方法隐藏代码段的区别,因为 //注释方法 每次只能注释单行,所以需要注释的每行代码都需要使用 //注释符号。
- #include <stdio.h>
- int main()
- {
- int a, b;
- scanf("%d", &a);
- //while (a)
- //{
- // b = a % 10;
- // a = a / 10;
- // printf("%d", b);
- //}
- return 0;
- }
复制代码