一.C程序编译过程。
(一) windows下的C编译过程:
源代码(.c)——>编译器——>目标代码(.obj)——>链接器(库代码,启动代码)——>可执行程序(.exe)
(二)linux下的C编译过程:
文本编辑器(输入得到源代码)——>编译器(.out)——>给权执行
二.C的关键字
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
inline restrict _Bool _Complex _Imaginary
_Alignas _Alignof _Atomic _Static_assert _Noreturn _Thread_local _Generic
三.C的注释
//这是一个注释 单行注释
/*这是一个注释*/ 多行注释
四.C的标识符
含义:C的标识符是用来标识变量、函数等其他项目的名称。
规范:A.只能是由英文字母、数字、下划线组成。
B.必须以字母或者下划线开头。
C.名称区分大小写,不能使用关键字来命名。
五.程序结构
C程序主要包括以下部分:
预处理器指令、函数、变量、语句&表达式、注释
实例:
#include <stdio.h>
int main()
{
/* 我的第一个C程序 */
printf("Hello,World \n");
return 0;
}
接下来我们讲解一下上面这段程序:
- 程序的第一行 #include <stdio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
- 下一行 int main() 是主函数,程序从这里开始执行。 每个C程序只能有一个主函数。
- 下一行 /*...*/ 将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
- 下一行 printf(...) 是 C 中另一个可用的函数,会在屏幕上显示消息 "Hello, World!"。
- 下一行 return 0; 终止 main() 函数,并返回值 0。
六.C的两个量与数据类型
-
1 C的数据类型
-
1.1基本类型:整数类型、浮点类型。
-
整数类型:(各种类型存储大小与系统位数有关,目前通用64位。)
名称 | 类型 | 存储大小 | 值范围 |
字符型 | char | 1字节 | -128到127或0到255 |
无符号字符型 | unsigned char | 1字节 | 0到255 |
有符号字符型 | signed char | 1字节 | -128带127 |
整型 | int | 2或4字节 | -32768到32767或-2147483648到2147483647 |
无符号整型 | unsigned int | 2或4字节 | 0到65535或0到4294967295 |
短整型 | short | 2字节 | -32768到32767 |
无符号短整型 | unsigned short | 2字节 | 0到65535 |
长整型 | long | 4字节 | -2147483648到2147483647 |
无符号长整型 | unsigned long | 4字节 | 0到4294967295 |
浮点类型:
名称 | 类型 | 存储大小 | 值范围 | 精度 |
单精度浮点型 | float | 4字节 | 1.2E-38到3.4E+38 | 6位小数 |
双精度浮点型 | double | 8字节 | 2.3E-308到1.7E+308 | 15位小数 |
长双精度浮点型 | long double | 16字节 | 3.4E-4932到1.1E+4932 | 19位小数 |
sizeof()函数,计算变量的字节数。
实例:
#include <stdio.h>
int main()
{
int a;
printf("sizeof(a)=%d\n", sizeof(a));
printf("sizeof(int)=%d\n",sizeof(int));
getch();
return 0;
}
-
1.2void类型:void表示没有可用的值。
-
1.3枚举类型:用来定义在程序中只能赋予其一定的离散整数值的变量。
-
1.4派生类型:它们包括指针类型、数组类型、结构类型、共用体类型和函数类型。
-
1.5布尔类型:C语言以0为假,非零为真。 BOOL类型返回真(true)假(false)。
-
2变量
变量:可以改变的量称为变量。
变量名:计算机中一块存储区的名称,好比一间房子的门牌号码。命名与其标识符一样。
-
2.1变量定义:
type variable_list; //定义变量
type variable_list = value; //定义并初始化。
type是一个有效的C数据类型,可以是char、int、float、double或用户自定义的对象。
variabe_list是一个变量的名称,多个标识符用逗号分隔。
value初始化值。不带初始化的定义,但带有静态存储持续时间的变量会被隐式初始化为NULL(所有字节值为0)。
-
2.2变量声明
变量声明:
1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
2、另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。 例如:extern int a 其中变量 a 可以在别的文件中定义的。除非有extern关键字,否则都是变量的定义。
extern int i; //声明,不是定义
int i; //声明,也是定义
-
3常量
常量是固定值,在程序执行期间不会被改变。可以是任何数据类型,常量值再定义后不能被修改。
-
3.1整数常量
整数常量可以是十进制、八进制、十六进制,不包括二进制。
前缀:0x或者0X表示十六进制、0表示八进制、不带前缀默认十进制。
后缀:U和L。U表示无符号(unsigned)、L表示长整型(long)。大小写以及顺序都行。
-
3.2浮点常量
浮点常量:由整数部分、小数点、小数部分和指数部分组成。
当使用小数形式表达时,必须包含整数部分、小数部分、或同时包含两者。
当使用指数形式表示时,必须包含小数点、指数、或者同时包含两者。
带符号的指数用E或e表示。
-
3.3字符常量
字符常量时括在单引号''中的。
字符常量:可以是普通字符、转义序列、或一个通用的字符。
在C中,前面有反斜杠时,具有特殊含义。
转义序列 | 含义 |
\\ | \字符 |
\' | '字符 |
\" | "字符 |
\? | ?字符 |
\a | 警报铃声 |
\b | 退格键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位的八进制数 |
\xhh | 一个或多个数字的十六进制数 |
-
3.4字符串常量
字符串常量是括在双括号""中的。
注:字符串要比字符多一个单元的存储空间,因为字符串要以"\0"表示结束。
-
3.5定义常量
定义常量的方式:
使用#define预处理器。
实例:
#define IDENTIFIER value //value常量命名位IDENTIFIER
//常量习惯以大写命名,变量以小写命名。
使用const关键字。
const前缀声明指定类型的常量。
const type VARIABLE = value; //type代表常量类型。
实例:
#include <stdio.h>
int main()
{
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int area;
area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);
renturn 0;
}