1.C语言程序的绝大部分内容应该记录在以.c作为扩展名的文件里,这种文件叫C语言的源文件。
2.C语言程序里还包括以.h作为扩展名的文件,这种文件叫头文件(只有极少数内容可以记录在头文件里)
3.C语言程序里可以使用数字和加减乘除四则运算
运算符号(*代表乘法,/代表除法)
4.C语言程序里每个计算步骤最后都必须用分号结束,每个用分号结束的计算步骤叫做一条语句。
5.C语言程序里绝大部分语句都必须写在大括号中间。
6.C语言程序里大括号可以用来代表函数(函数可以看作是一组语句)
7.每个函数必须有自己的名字,不同函数的名字不能相同。
8.C语言程序里必须包含一个叫作main的函数,这个函数叫做,主函数。
9.C语言程序必须从主函数的第一条语句开始执行,主函数的最后一条语句结束后程序结束。
10.函数结束的时候可以用一个数字表示它的工作结果,这个数字叫函数的返回值。
11.主函数应该有一个返回值,如果这个返回值是0,表示程序希望计算机以为它正常结束了,如果不是0,表示程序希望计算机认为它出问题了。
12.语言里预留了几十个英文单词,它们叫做关键字。
每个关键字都有特定的用处,不能随意使用,所有的关键字都是由英文字母组成。
return就是一个关键字,它有两个用途。
主要用途是结束函数的执行,辅助作用是指定返回值的数值。
C语言常用32个关键字 | |
auto | 声明自动变量 |
short | 声明短整型变量或函数 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数 |
float | 声明浮点型变量或函数 |
double | 声明双精度变量或函数 |
char | 声明字符型变量或函数 |
struct | 声明结构体变量或函数 |
union | 声明共用数据类型 |
enum | 声明枚举类型 |
typedef | 用以给数据类型取别名 |
const | 声明只读变量 |
unsigned | 声明无符号类型变量或函数 |
signed | 声明有符号类型变量或函数 |
extern | 声明变量是在其他文件正声明 |
register | 声明寄存器变量 |
static | 声明静态变量 |
volatile | 说明变量在程序执行中可被隐含地改变 |
void | 声明函数无返回值或无参数,声明无类型指针 |
if | 条件语句 |
else | 条件语句否定分支(与 if 连用) |
switch | 用于开关语句 |
case | 开关语句分支 |
for | 一种循环语句 |
do | 循环语句的循环体 |
while | 循环语句的循环条件 |
goto | 无条件跳转语句 |
continue | 结束当前循环,开始下一轮循环 |
break | 跳出当前循环 |
default | 开关语句中的“其他”分支 |
sizeof | 计算数据类型长度 |
return | 子程序返回语句(可以带参数,也可不带参数)循环条件 |
13.计算机根据不同数字在某些方面的区别把它们分成几组,每组叫做一个数据类型。
每个数据类型都有一个名字。
14.整数类型是一种数据类型,它的名字是int,这个数据类型里包含几乎所有不带小数点的数字。
15.程序里使用的数字必须有整数类型。
16.程序里不带小数点的数字默认都是整数类型的。
17.如果函数有返回值的话就必须把返回值的类型写在函数名称之前。
18.C语言程序编码规范:
1.一行里最多包含一条语句。
2.被同一对大括号包含的语句最左边一列应该上下对齐。
3.在合适的地方使用空格和空行。
19.C语言程序里通常包含预处理指令
预处理指令以#做开头,不以;做结尾
20.标准C阶段遇到的预处理指令都可以把文件里的内容替换成其他内容。
21.#include预处理指令可以把一个头文件的内容包含到当前文件里。
这个预处理指令里通常使用相对路径表示被包含头文件的位置。
如果把相对路径包含在<>中间就表示以系统中预先规定好的一组目录依次作为相对路径的起点。
如果把相对路径包含在""中间就表示首先以当前文件所在目录作为起点,然后以系统中预先规定好的一组目录依次作为起点。
22.C语言程序里可以加入文字性的说明信息,这些信息必须加入到注释区域里。
计算机直接忽视注释区域里面的内容。
单行注释以//开头一直到行尾。
多行注释以/*做开头,以*/做结尾。
23.C语言程序里大量使用名称区分不同内容。
这些名称叫做标识符。
编写标识符的时候最好采用英文单词。
标识符的编写规则:
1.第一个字符应该是英文或者下划线。
2.后面的每一个字符可以是英文字母、下划线或阿拉伯数字。
3.大小写不同的标识符是不同的标识符(大小写敏感)。
4.关键字不能做标识符使用。
5.标识符的长度没有限制。(如果标识符太长,计算机只会截取前面一部分使用)。
6.标识符应该采用驼峰方式或下划线方式书写。
24.编译器可以把写好的文件翻译成计算机认识的格式。
gcc是Linux系统里C语言程序编译器
MinGW是Windows里面的gcc
25.Linux系统里C语言程序开发基本步骤:
1.使用vi编写源文件和头文件。
2.使用gcc命令把所有源文件翻译成计算机认识的格式。(编译)
3.使用./a.out作为命令执行得到的结果文件。
26.gcc编译器的工作步骤:
1.处理所有预处理指令。
2.把第一步的处理结果翻译成计算机认识的格式。(编译)
3.把第二步的处理结果合并成可以执行的文件。(链接)
27.gcc命令选项介绍:
-E 只处理预处理指令。
-c 只处理预处理指令和编译工作
处理结果是以.o作为扩展名的目标文件。
-o 用来指定得到的结果文件名称。
-std=c89/-std=c99 用来指定这次编译采用什么版本的规范。
默认采用c89规范编译
28.C语言里提供了一组工具,它们叫做标准函数。
每个标准函数用来解决一个常见问题。
不同标准函数名字不同。
可以在程序里编写函数调用语句使用标准函数。
29.printf标准函数可以用来把程序了的数字,字符显示在终端窗口。
为了使用这个标准函数需要包含stdio.h头文件
30.可以在双引号里使用占位符把数字转移到双引号的后面。(%d)
双引号后面的数字可以是一个计算公式,计算机先计算出公式的结果,然后替换双引号里面的占位符。
不同类型的数字应该和不同的占位符配合使用,整数类型数字应该和%d占位符配合使用。
31.可以在一条语句里使用多个占位符,这个时候就应该在双引号后面提供多个数字。
32.程序里的所有数字必须记录到内存里
内存由大量的字节构成,每个字节可以用来记录一个数字。
每一个字节有一个编号,这个编号叫做字节的地质,不同字节的地址不同。
所有字节的地质从0开始依次向上递增。
字节之间有前后顺序,地址小的字节在前,地址大的字节在后
33.可以把几个相邻的字节合并成一个整体,用来记录一个数字。
内存里用来记录一个数字的所有字节叫做一个存储区
一个存储区只能记录一种类型的数字。
存储区也有地址,存储区的地址是它所包含的字节中最前面那个字节的地址。
34.C语言程序里变量用来代表存储区,对变量的操作就是对它所代表的存储区的操作。
变量必须首先声明然后才可以使用,变量声明语句可以用来声明变量。
变量声明语句让计算机为程序分配存储区。
可以在一条语句里声明多条同类型变量。
程序中可以向变量里存放数字也可以从变量中获得数字。
35.赋值语句可以向变量里存放数字。
赋值语句里使用赋值操作符(=)
36.赋值操作符要求左边的内容必须可以代表存储区(这种内容叫左值),变量是最常见的左值。
赋值操作符右边的内容必须可以代表数字。
赋值语句可以把赋值操作符右边的数字放到左边的存储区里。
37.可以在声明变量的时候立刻对变量赋值,这叫做变量的初始化。
C语言里所有的变量都应该初始化。
38.可以在程序里直接把变量当数字使用,这就是从变量里获得数字的方法。
39.变量名称既可代表存储区也可以代表存储区里的数字,由环境决定。
40.存储区的地址也可以代表存储区。
在变量名称前加符号&就可以得到存储区的地址。
可以使用%p做占位符把地址数据显示在屏幕上。
41.程序中可以用变量代表一个固定的数字。
程序中可以用变量代表一组数字(变量在不同的时候代表不同的数字)
42.字符类型的名称是char
字符类型里包含256个不同的字符
数据('a','^'等),每个字符数据都可以用一个整数表示。
ASCII码表里列出了所有字符和整数之间的对应关系。
'a' 97
'A' 65
'0' 48
43.ASCII码表里所有小写英文字母是连续排列的,'a'对应的整数最小,'z'对应的整数最大。
所有大写英文字母和阿拉伯数字字符也都符合这个规律。
'd' - 'a' 等于 'D' - 'A'
'd' - ' a' 等于 '3' - '0' 等于3 - 0
44.所有字符数据被分成两组,每组包含128个。
其中一组字符数据对应的整数在所有计算机里都一样,这些整数的范围从0到127。
另外一组字符数据对应的整数在不同的计算机里不一样,这些整数有可能从-128到-1也有可能从128到255。
'\n' 换行
'\r' 会车
'\\' 代表字符\
'\'' 代表字符'
'\"' 代表字符"
45.短整数类型名称是short
这个类型里包含65536个不同的整数,其中一半是非负数,另一半是负数。这些数字以0为中心向两边扩展。
46.长整数类型名称是long
这个类型里包含2的32次方个不同的整数,其中一半是非负数,另一半是负数。这些数字以0为中心向两边扩展。
47.整数类型名称是int
在我们计算机里整数类型和长整数类型完全一样。
48.以上数据类型统一叫有符号类型。
每个有符号类型对应一个无符号类型,
49.无符号类型的名称就是在对应有符号类型名称前加unsigned关键字
例如: unsigned char,unsigned int
无符号类型所包含的数字个数和对应的有符号类型的个数一样,但是不包括负数。
50.整数相关数据类型所包含的数字范围互相重叠并且逐渐扩大。
51.在不带小数点的数字后加u表示数字的类型是无符号整数类型的。
52.C语言里使用浮点类型表示带小数点的数字,浮点类型分为单精度浮点类型和双精度浮点类型。
双精度浮点类型可以记录更多的小数点后面的数位。
单精度浮点类型名称是float
双精度浮点类型名称是double
53.程序中带小数点的数字默认是双精度浮点类型的。
带小数点的数字后加f表示数字的类型是单精度浮点类型。
54.C语言里允许扩展出新的数据类型,
扩展出来的新的数据类型叫复合数据类型。
复合数据类型都需要编写语句先创建出来然后才能使用。
55.C99规范里引入布尔类型
这个类型里值包含0和1两个整数,其中0叫做假,1叫做真。真和假都叫布尔值。
56.C语言程序里任何整数都可以当作布尔值使用,0当作布尔值使用的时候是假,所有其他整数当布尔值使用的时候都是真。
一般不需要在程序里使用布尔类型,之间把整数当作布尔值使用就可以了。
57.数据类型和占位符的对应关系:
char 和 unsigned char %c
short %hd
unsigned short %hu
long %ld
unsigned long %lu
int %d
unsigned int %u
float %f和%g
double %lf和%lg
%f和%lf在显示的时候会保留小数点后面无效的0,%g和%lg不会保留。
58.不同类型的存储区所包含的字节个数不同。
sizeof关键字可以用来计算一个存储区包含的字节个数。
char 和 unsigned char 1个字节
short 和 unsigned short 2个字节
long 和 unsigned long 4个字节
int 和 unsigned int 4个字节
float 4个字节
double 8个字节
59.sizeof关键字后的小括号里对任何存储区内容的修改都不会真正的发生。