源作者:答案鬼
一个c程序总是从什么函数开始运行的《C程序设计》知识点
第1章 C语言概述
1.1. C语言属高级语言,区分字母的大小写,以函数为基本单位采用模块化程序设计,可直接访问内存,进而对硬件进行操作。
1.2. 用C语言编写和程序称作C源程序,简称C程序,C程序可由若干个文本文件组成,文件扩展名为C(使用C++编译器时默认扩展名为CPP)。C源程序经编译、连接后得到扩展名为EXE的可执行文件(目标程序)。
预处理 编译、连接 执行
若干个C程序文件----→C程序------→目标程序文件--→
1.3. C程序从主函数开始执行,每个C程序有且仅有一个主函数,因此,每个C程序文件中至多有一个主函数。
1.4. C语句以分号结尾,用{}括起来的一组语句称作复合语句,复合语句可省略花括号之后的分号。
1.5. 允许一行内写多个C语句,也允许一个C语句占用多行,但保留字和标识符不可拆行。
1.6. 在C集成环境VC++ 6.0中,新建工程、保存当前程序文件、编译当前程序、执行当前程序的快捷键依次为:Ctrl+N、Ctrl+S、F7、Ctrl+F5。
第2章 程序设计的灵魂——算法
2.1. 解决问题的方法和步骤称作算法。算法和数据结构是程序的两个主要要素。
2.2. 算法具有确定性、有穷性、有效性等特点。
2.3. 算法可用自然语言、流程图、N-S图、计算机语言、伪代码等描述。伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。
起止框
输入输出框
判断框
处理框
注释框 ……
连接点 〇
流程线 有向线段或折线
图2.1 ANSI流程图符号
2.4. 算法的基本结构分为:顺序结构、选择结构、循环结构。
↓
↓
↓
↓←-
--┐
Y┌
条件
┐N
条件
┐N
│
↓
↓
↓
↓Y
│
↓
│
│
条件
┘Y
↓
└---
→↓←
---┘
↓←-
--┘
↓N
图2.2 顺序结构 图2.3 选择结构 图2.4 当循环 图2.5 直到循环
条件
条件
循环体
Y
N
循环体
条件
图2.6 顺序结构 图2.7 选择结构 图2.8 当循环 图2.9 直到循环
2.5. 由三种基本结构组成的程序称作结构化程序,结构化程序中的每个模块只有一个入口和一个出口。结构化程序设计通常采用“自顶向下、逐步细化”的设计方法。
第3章 数据类型、运算符与表达式
3.1. C的数据类型如下所示:
表3.1 C语言的数据类型
数据类型
字节数
数值范围
基本类型
整型
无符号短整型(unsigned
short int)
4
0~216-1
有符号短整型(signed
short
int
)
2
-215~215-1
无符号长整型(unsigned long
int)
4
0~232-1
有符号长整型(signedlong
int)
4
-231~231-1
实型
单精度实型(float)
4
长37位,6位有效
双精度实型(double)
8
长307位,15位有效
长双精度实型(long double)
10
长4931位,18位有效
字符型(char)
1
0~28-1
空类型(void)
1
构造类型
枚举类型
2
指针类型
2
数组类型
结构体类型
共用体类型
3.2. C符号常量名、变量名、函数名等统称标识符,标识符的命名规则为:以字母或下划线开头,由字母、数字、下划线组成,超出32个字符部分被忽略(最好不超过8个字符)。
3.3. 以0开头的整数为八进制整数,以0X或0x开头的整数为十六进制无符号整数。
3.4. -32768~32767为int型,0U~65535U为unsigned型,65536U~4294967295U和0UL~4294967295UL为unsigned long型,-2147483648~-32769、32768~2147483647和-2147483648L~2147483647L为long型。后缀U和L不区分大小写和次序。
3.5. 数据的存储字节数可用运算符sizeof()查询,括号内可是数据、表达式或类型名。
3.6. 有符号整数(int和long)按补码存储,因此,-65535U~-1U与1U~65535U依次相等,-4294967295UL~-1UL与1UL~4294967295UL依次相等。
3.7. 定点数(含小数点数)和浮点数统称C实型常量,浮点数的一般形式为:
尾数e除码 或 尾数E除码
其含义为:
尾数×10除码
其中,尾数为定点数或整数,除码为整数。标准浮点数的小数点在第1位非0数字之后。后缀L或l
的实型常量为长双精度,无后缀实型常量为双精度。
3.8. 用一对单引号括起来的单个字符称作C字符常量,其值为该字符的ASCII码(1字节无符号整数)。
3.9. 转义字符' '、't'、'\'、'''、'"'分别表示回车符、制表符、反斜杠、单引号、双引号。
3.10. 转义字符'整数'、'x整数'(或'X整数')中的整数分别为八进制、十六进制,表示以此整数为ASCII码的字符。
3.11. 用双引号括起来的一串字符称作C字符串型常量,串中字符数称作串长,可以为0。字符串的存储形式为:依次存储字符串中字符的ASCII码,并追加一个空字符'0'(1字节无符号整数0)。
3.12. 字符型、整型、实型数据统称数值型数据,不同类型的数值型数据可以混合运算,低精度数据被自动强制转换为高精度数据后方参与运算。另外,字符常量为有符号短整数,两个字符型数据间的运算按有符号短整数处理。
3.13. 如果将数值型数据赋给不同类型的数值型变量,则数值型数据将被自动强制转换为变量的数据类型。
3.14. C允许定义变量的同时赋初值。
3.15. C运算符及其优先级、结合性如附录C(教材第365页)所示。
3.16. 强制数据类型转换的一般形式为:
(类型名)数据
3.17. 自增++、自减--运算只能作用于变量,作用于右侧时,返回变量自增、自减前的值。
3.18. 赋值表达式的格式为:
变量=表达式 或 变量op=表达式
其中,op为运算符 +、-、*、/、%、>>、。
其中,+、-、++、--、+=、-=均以基类型数据为基本单位。
10.6. 一维数组的数组名可作为指针调用,它指向数组中的第一个元素,以数组中元素的类型为基类型。数组名的值不可修改,且sizeof(数组名)的值为整个数组所占内存的字节数。
10.7. 对于一维数组来说,
基址+i 和 &基址[i]
均指向数组中的第i+1个元素(i>=0);
*(基址+i) 和 基址[i]
均表示数组中的第i+1个元素(i>=0)。
10.8. n维数组可看作是以n-1维数组为元素的一维数组,数组名可看作是指向数组中的第一个n-1维数组的指针。
10.9. 下标变量可作为实参,但不可作为形参,实际上,它被误认为指针。
10.10. ※ C源程序经编译后,系统为源程序中的每个函数均分配一个入口地址,称作函数指针。在C源程序中,函数指针用函数名表示,其值不可修改。以函数指针为值的变量称作函数指针变量,其定义格式为:
函数类型名(*函数指针变量名)( );
可用下述格式代替函数名:
(*函数指针)
10.11. ※ 函数返回值可以是指针,定义函数的一般格式为:
基类型 *函数名(形参列表){函数体}
10.12. 不允许将非0数直接赋给指针变量,须做强制转换。当指针变量的值为0时,称之为空指针。
10.13. ※ 以指针为元素的数组称作指针数组。
10.14. ※ 以指针为基类型的指针称作指向指针的指针,以指向指针的指针为值的变量称作指向指针的指针变量,其定义格式为:
存储方式关键字 基类型名 **指向指针的指针变量名
10.15. ※ C源程序经编译、连接所得目标程序(exe文件)可作为DOS外部命令使用,命令行的一般式为:
路径目标程序文件名 参数1 参数2 … 参数n
10.16. ※ C主函数main可带两个形参,前者为int型,用于接收命令行中字符串个数,后者为字符串指针数组,用于接收命令行中各字符串。带参主函数的格式为:
void main(int 形参1,char *形参2[ ]) {函数体}
其中,
形参1=参数个数+1
形参2[0]="路径目标程序文件名"
形参2[i]="参数i",i=1,2,…,n
第11章 结构体与共用体
11.1. 声明结构体语句的一般格式为:
struct 标识符{成员表列};
其中,成员表列为一组声明变量的语句,这些变量称作该结构体的成员,又称数据项、分量、域、字段等。语句结尾处的分号不可缺省,标识符可以省略,如果不省略标识符,则新增一个数据类型(名):
struct 标识符
11.2. 定义结构体变量的一般格式为:
struct 标识符 变量表列;
也可在声明结构体的同时定义变量:
struct 标识符{成员表列}变量表列;
11.3. 结构体变量可在定义时赋初值,类似于数组赋初值。
11.4. 结构体变量的整体使用有以下四种:
(1) 赋值:结构体变量=同类型结构体变量
(2) 求存储量:sizeof(结构体变量)
(3) 取地址:&结构体变量
(4) 初始化——与数组初始化相似。
11.5. 结构体中成员可作为普通变量使用,成员的访问格式为:
结构体变量名.成员名 或 结构体指针->成员名
11.6. 结构体中的成员名只在该结构体类数据中有效,因此,不同结构体中的成员可以同名,成员名也可与普通变量同名。
11.7. 结构体中的成员可以是指针,其基类型可是正在定义或尚未定义的结构体。
11.8. 以同一类型结构体为元素的数组称作结构体数组,以结构体为基类型的指针称作结构体指针。结构体数组和指针的定义和使用与基本类型数组和指针相似。
11.9. 共用体与结构体相似,主要区别有:
(1) 定义共用体的保留字为union;
(2) 同一共用体各成员的基址相同,访问成员时必须与最后所存数据的类型相同,共用体数据所占内存与其成员中所占内存最大者相同;
(3) 不可初始化共用体变量。
11.10. 读取共用体成员时,应按最后一次所存入成员的数据类型读取。
11.11. 共用体和结构体的成员可以是已存在的共用体和结构体,但不可嵌套定义。
11.12. 声明枚举类型语句的一般格式和功能为:
格式:enum 标识符{枚举元素列表}变量列表;
功能:
(1) 显式或隐式指定所列枚举元素所代表的整数;
(2) 如果不省略标识符,则定义一个枚举类型(名):
enum 标识符
枚举元素表是一组用逗号分隔的标识符或整数常量赋值表达式,第一个枚举元素的默认值为0,其它枚举元素的值为前者加1。
11.13. typedef语句的格式和功能为:
格式:typedef 数据类型名 别名1,…,别名n;
功能:给指定数据类型增加一组名称。
11.14. typedef语句也可在声明结构体、共用体、枚举类型的同时给它增加一组名称。
第13章 文件(B班不作要求)
13.1. 文件是存储在外部介质(存储器)上的数据集合,每个文件均有标识符,称作文件名。
13.2. C所使用的数据文件分为文本文件和二进制文件。文本文件以字符为基本单位,存储字符所对应的ASCII码,又称TXT文件或ASCII文件;二进制文件中的数据存储形式与内存中存储形式相同。
13.3. 指向文件结构体的指针称作文件类型指针,简称文件指针或FILE指针,其定义格式为
FILE *文件指针;
13.4. 读写文件之前须用fopen打开或创建该文件,访问结束后用fclose关闭该文件。