一、基础函数
(一)main函数
首先main函数是一个函数,它是程序的主入口,代码都是从main函数开始执行的,所以它也被称为主函数。main函数有且仅有一个。
基本格式为:
(二)printf函数
printf是一个库函数,使用时需要包含对应头文件(#include<stdio.h>),作用是能够将信息打印在屏幕上。printf可以用来打印字符串,只要把想打印的字符串放在双引号中就可以(还可以使用%s这一占位符),如下图:
printf也可以用来打印其他数据,例如: (其中%d, %c, %f, %lf是占位符,会被后面的值替代)
(三)scanf函数
scanf是一个库函数,使用时要包含对应的头文件(#include<stdio.h>),作用是能够从屏幕上读取数据,和printf的用法很像。如图:
注:库函数是指为了不重复实现常见的代码,让程序员提升开发效率,C语言标准规定的一组函数,这些函数在由不同的编译器厂商根据标准进行实现。这些函数组成了一个函数库,被称为标准库,这些函数也被称为库函数,一个系列的库函数一般会声明在同一个头文件中,所以库函数的使用要包含对应的头文件。
二、关键字
C语言中有一批保留的名字的符号,例如int,double,char,if 。这些符号被称为保留字或者关键字,关键字都有特殊的意义,是留给C语言使用的,创建标识符的时候不能和关键字重复,关键字也不能自己创建。
如果想详细了解关键字,可使用网站:C 关键词 - cppreference.comhttps://zh.cppreference.com/w/c/keyword
三、ASCII编码
键盘上打出的各种符号被统一称为字符,C语言中字符是用单引号括起来的,如'a' , 'b'等。计算机中的数据都是以二进制形式存储的,C语言中的字符就遵循ASCII编码的方式。
如图:
其中有几组特殊的数据,我们最好能够掌握:
字符A~Z的ASCII码值从65~90
字符a~z的ASCII码值从97~122
对应的大小写字符(a和A)的ASCII码值的差值为32
数字字符0~9的ASCII码值是从48~57
四、转义字符
转义字符:转变原来的意思的字符
如图:
其中 \n 就是一个转义字符,作用是换行。可以理解为:n本是一个普通的字符,被 \ 转义为换行的意思。C语言中的转义字符还有很多,这里只讲解其中一些,例如:
(1)\' : 用于表示字符常量 '
注:在C语言中,两个 ' 会被凑成一对,中间加入一个符号,以此来表示一个字符,如果不通过转义字符来打印,单独的那个没有凑成一对,编译器会报错。
(2)\" :用于表示一个字符串内部的双引号。
注:双引号和单引号很像,双引号中间放字符串,如果直接打印会因为没有凑成一对报错。
(3)\\ : 用于表示一个反斜杠,防止它被解释为一个转义序列符。
(4)\t : 制表符,相当于键盘上的Tab,光标移到下一个水平制表位。
注: \t被认为是一个转义字符,导致 \ 没有打印出来,为了避免这种情况,打印 \ 时要使用转义字符 \\
(5)\b : 退格键,光标回退一个字符,但不删除字符。
注:这里通过 \b 回退了一格,c 被 d 覆盖了。
(6)\0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其 ASCII码值是0。
(7)\ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表示字符X(字符八进制的表示形式)。
(8)\xdd :d d表⽰2个⼗六进制数字。 如: \x30 表示字符0(字符十六进制的表示形式)。
五、语句
(一)空语句
只有一个分号就是一个空语句。
一般情况下,某处需要一条语句,但这个语句又不需要做任何事情,就可以写一条空语句。
(二) 表达式语句
在表达式后面加一个分号就是表达式语句。
(三)函数调用语句
函数调用时,后面加上分号,就是函数调用语句。(可以使库函数,也可以是自己定义的函数)
(四)复合语句
成对括号中的代码构成一个代码块,也叫复合语句。
(五)控制语句
控制语句用于控制程序的执行流程,已实现程2.序的各种结构方式(顺序结构,循环结构,选择结构),C语言中的控制语句可分为以下三类:
1.条件判断语句也叫分支语句:if 语句,switch语句。
2.循环执行语句:do while语句,while语句,for语句。
3.转向语句:break语句,goto语句,continue语句,return语句。
六、注释
注释是对代码的解释,编译器会忽略注释,所以注释是给自己或者其他程序员看的。
注释有两种方式:
(1)/**/ 形式
/* 和 */ 中间的内容会被注释掉。
(2)//形式
// 后面的内容会被注释掉,这种注释只能是单行,可以放在行首,也可以放在一条语句的结尾。
七、数据类型
数据类型分为两类,一类是内置的,一类是自定义的,详细如图:
除上图所示外,内置类型还有布尔类型,布尔类型是在C99中引入的,是专门表示真假的。
布尔类型的使用需要包含头文件 <stdbool.h>
布尔类型变量的取值是true或者false
八、sizeof 操作符
sizeof是一个关键字,也是操作符,可以用来计算不同数据类型的长度,单位是字节。sizeof操作符的操作数可以是类型,也可以是变量或者表达式。当操作数是类型时:sizeof(类型),当操作数是表达式的时候,可以省略掉后面的括号:sizeof 表达式
sizeof后面的表达式是不真实参与运算的,根据表达式的类型得出大小。
sizeof的计算结果是size_t类型的,所以打印时可以用 %zd。
九、signed和unsigned
C语言使用signed和unsigned关键字修饰字符型和整型类型
signed关键字代表一个类型带有正负号,包含负值
unsigned关键字代表该类型不带有正负号,只能表示零和正整数
对于int类型,默认是带有正负号的,也就是说int等同于signed int
整型变量声明为unsigned的好处是,同样长度的内存能够表示的最大整数值,增大了一倍。这是因为整型变量在计算机中以二进制存储,以signed修饰时,二进制最高位是符号位,表示数值的正负 ,而以unsigned修饰时,都是数值位。比如,十六位的signed short的取值范围是 -32768~32767,而unsigned short的取值范围是0~65535。
注意:C语言规定char默认是否带有正负号,由当前系统决定,也就是说char可能是signed char也可能是unsigned char,这一点与int不同,int就等同于signed int。
十、变量
(一)变量的创建
首先我们要知道类型时用来创建变量的,其次C语言中把经常变化的值称为变量,不变的值称为常量。变量的创建形式:
在定义一个变量的时候,我们最好初始化,否则使用了未初始化且未赋值的变量容易出bug。
这是因为main函数中定义的变量叫局部变量,如果不初始化是随机值(图中使用的编译器是VS2022,对语法要求较高,所以会报错,有些编译器则会打印出随机值)。如果想避免这种问题可以初始化,而初始化就是指在创建变量的同时,给一个值。
当然,变量创建好之后值也可以更改。
(二)变量的分类
(1)全局变量:在大括号外部定义的变量就是全局变量,全局变量的作用范围更广,在整个工程中想使用,都是可以使用的。
(2)局部变量:在大括号内部定义的就是局部变量,局部变量使用的范围比较有限,只能在自己所在的局部范围内使用。