知识链接
一、C语言的基本数据类型
C语言的数据基本类型分为字符型、整型、长整型及浮点型,见表3-2-1。
表3-2-1 C语言数据基本类型

1. char(字符类型)
char 类型的长度是一个字节,通常用于定义处理字符数据的变量或常量,它分为无符号字符类型和有符号字符类型两种,默认值为有符号类型。
●unsigned char 类型用字节中所有的位来表示数值,可以表达的数值范围是0~255。
●signed char类型用字节中最高位表示数据的符号,“0”表示正数,“1”表示负数,负数是用补码表示,所能表示的数值范围是-128~+127。unsigned char常用于处理ASCII字符或用于处理小于或等于255的整型数。
2. int(整型)
int类型的长度为两个字节,用于存放一个双字节数据。它分为有符号整型和无符号整型,默认值为有符号整型。signed int 表示的数值范围是-32 768~+32 767。字符中最高位表示数据的符号,“0”表示正数,“1”表示负数。unsigned int表示的数值范围是0~65 536。
3. long(长整型)
long类型的长度为四个字节,用于存放一个四字节的数据。它分为有符号长整型和无符号整型,默认值为有符号长整型。singed long表示的数值范围是-2 147 483 648~+2 147 483 647。字节中最高位表示数据的符号,“0”表示正数,“1”表示负数。unsigned long表示的数值范围是0~4 294 967 295。
二、变量的定义和声明
1.变量的定义
在程序中,常量可以不经说明直接引用,而变量必须作强制定义(说明),即“先定义,后使用”。
变量定义的一般形式:变量类型 变量名;
例如:unsigned char i;//定义无符号字符型变量i
对于多个同类型变量可以同时定义,变量名之间用逗号隔开。
例如:unsigned int a,b,c;//定义3个无符号整型变量a,b,c
变量的名字是一种标识符,它必须遵守标识符的命名规则,变量名习惯用小写字母表示,以增加程序的可读性。必须注意的是大写字符和小写字符被认为是两个不同的字符,因此,data和Data是两个不同的变量名,代表两个完全不同的变量。
2.变量的声明
变量的声明有两种情况:一种是需要建立存储空间。例如:int a在声明的时候,就已经建立了存储空间。另一种是不需要建立存储空间。例如:extern int a 其中的变量a在别的文件中定义。
三、函数
C语言程序是由一系列函数组成的。函数是实现一定功能、具有一定格式的程序段。函数可以在程序中根据需要重复调用。使用函数可使程序结构清晰,提高程序的可读性,易于调试和维护,减少编程工作中的重复功能。函数分为库函数和自定义函数两类。
1.库函数
为了简化代码编写的难度,通常C编译器会将一些相对固定的功能程序事先编写成函数,以库形式存储起来,这一类函数称为库函数。例如,bit isalpha(char c);检查英文字母函数。
在程序中使用库函数时,必须在源程序开始处使用预处理命令“#include”包含相应的头文件,其格式为:
#include<头文件名>或#include”头文件名”
2.自定义函数
用户根据自己的需要编写完成相应功能的程序段,这一类函数称为自定义函数。其格式如下:
类型标识符 函数名(形式参数列表)
{
声明部分;
语句部分;
}(https://www.daowen.com)
关于自定义函数:
●类型标识符:指定函数返回值的数据类型,又称为函数的类型。它可以是C语言支持的各种数据类型,如int、long、float、char等。如果要函数不返回值,则要把函数类型定义为void。
●函数名:一个合法的用户标识符,用于在程序中区分不同的函数。
●形式参数:在函数名后面小括号中的变量称为形式参数,简称形参,形参用于从函数外部接收数据。函数也可以没有形式参数。
●函数体:用一对花括号括起来的语句序列,实现函数的功能。它由声明部分和执行部分组成。
●空函数:定义函数时,函数体为空的函数。空函数用于快速构建程序的框架。
3.函数的声明和调用
在一个C程序中,当自定义函数位于主调函数后面时,就需要在程序的开始位置对自定义函数进行声明,以便将函数的名称、参数的个数和类型等信息通知编译器,从而在调用此函数时,编译器才能正确识别该函数并检查调用是否合法。
(1)函数的声明
函数声明的一般格式:
类型标识符 函数名(参数类型1形参名,参数类型2形参2……参数类型n 形参n);
例如:void delay_ms(unsigned int x);//对延时函数进行声明
(2)函数的调用
调用函数的一般格式:
●无参数函数调用的一般形式:
函数名();
例如:delay_ms();//调用延时函数
●有参数函数调用的一般形式:
函数名(有数列表);
例如:delay_ms(500);//调用延时函数,实参值为500
在调用有参数函数时,必须给被调函数提供形式参数所声明类型的数据,这些数据被称为实际参数,简称实参。实参可以是常量、变量或表达式。
函数调用的两种方式:
●函数语句方式:把函数调用作为一个独立的语句,这种方式通常用于调用一个没有返回值的函数。当用此方法调用有返回值的函数时,无法使用函数的返回值。例如:

●函数表达式方式:函数调用出现在一个表达式中,这种方式通常用于调用有返回值的函数。函数的返回值可参加表达式的运算。无返回值的函数不能用此方式调用。例如:

四、宏定义
宏定义的作用是用一个标识符(宏名)来表示一个字符串,其格式为:
#define 标识符(宏名) 字符串
在宏定义中,“#”表示这是一条预处理命令,“define”为宏定义命令。标识符是自行定义的宏名。字符串可以是常数或表达式等。例如:
#define PI 3.14159 //用PI来表示3.141 59这个常量
#define uint unsigned int //用uint 来表示unsigned int
#define uchar unsigned char //用uchar 来表示unsigned char
在程序编写过程中,采用宏定义方式可以增强程序的可读性,并且能使语句变得简洁明了。