C++第四章 程序结构 核心知识点
一、C++程序整体组成结构
1. 预处理指令
- #include :头文件包含,引入库函数、类、常量声明
#include <iostream> 输入输出流头文件
- #define 宏定义(常量、简易函数)
- 预处理阶段执行,编译前替换代码
2. 全局声明区
全局变量、全局常量、函数原型声明、自定义类型(结构体/类),作用域整个程序。
3. 主函数 main()
C++程序入口,唯一执行起点;
标准写法:
cpp
int main()
{
语句序列;
return 0; // 返回操作系统,0代表正常结束
}
4. 自定义函数
除main外其他功能函数,实现代码复用;
5. 注释
- 单行注释 //
- 多行注释 /* 内容 */
二、函数结构(本章重点)
1. 函数完整构成
cpp
返回值类型 函数名(形参列表)
{
函数体(定义变量、执行语句、逻辑运算)
return 返回值;
}
- 返回值类型:void(无返回值)、int、double、char等;
- 形参:调用时接收外部数据,多个参数逗号隔开;
- 无参函数:括号为空或写 void 。
2. 函数声明(原型声明)
函数定义写在main后面时,必须提前声明:
cpp
int add(int a,int b); // 函数原型
int main(){...}
int add(int a,int b){return a+b;}
作用:告诉编译器函数名、参数个数、参数类型、返回类型。
3. 函数调用
1. 调用格式: 函数名(实参列表);
2. 实参:实际传入的数据,常量、变量、表达式均可;
3. 调用流程:暂停主程序→执行被调函数→函数结束回到调用处继续执行。
4. 嵌套调用与递归调用
- 嵌套调用:A函数里调用B函数;
- 递归调用:函数内部调用自身,必须设置终止条件,避免死循环。
三、变量作用域与生存期
1. 作用域(变量有效使用范围)
1. 局部变量
定义在函数内、复合语句 {} 内;仅本块内可用,外部不可访问;形参属于局部变量。
2. 全局变量
函数外部定义,所有函数都可访问;生命周期贯穿整个程序;
局部变量和全局变量同名时,局部优先(就近原则)。
2. 存储类别(生存期)
1. auto 自动变量(默认)
局部变量默认auto;调用函数分配内存,函数结束释放。
2. static 静态变量
局部静态变量:仅第一次调用初始化,值保留,内存不释放;
全局静态变量:仅限本源文件使用,其他文件不可引用。
3. extern 外部变量
声明其他源文件定义的全局变量,实现多文件数据共享。
4. register 寄存器变量
建议存入CPU寄存器,提升读取速度,现代编译器自动优化,极少使用。
四、参数传递方式
1. 值传递(默认)
实参拷贝一份给形参,形参修改不影响实参;
适合普通数值传递,无法修改原始变量。
2. 地址传递(指针参数)
把变量地址传给形参,形参通过地址修改实参原值。
3. 引用传递(C++特有)
形参为实参别名,操作别名等价操作本体;语法简洁,常用作函数参数。
五、头文件与多文件结构
1. 头文件( .h / .hpp ):存放函数声明、常量、类定义;
2. 源文件( .cpp ):存放函数具体实现;
3. 多文件编译:多个cpp文件联合编译, #include "xxx.h" 引入自定义头文件;
4. 头文件保护宏(防止重复包含)
cpp
#ifndef HEAD_H
#define HEAD_H
// 头文件内容
#endif
六、预处理常用指令
1. #include <系统头文件> 、 #include "自定义头文件"
2. 宏定义: #define PI 3.1415
3. 条件编译: #ifdef / #ifndef / #else / #endif
七、常用基础规则总结
1. 语句以分号结尾;代码块用大括号包裹;
2. main函数不能被其他函数调用,不能重载;
3. 函数不能嵌套定义(函数内部不能写另一个完整函数);
4. 静态局部变量只会初始化一次;
5. 全局变量初始化默认值0,局部auto变量默认随机垃圾值。
八、易错考点
1. 函数声明只写类型,不用写变量名也合法: int add(int,int);
2. void函数不能return带回数值,只能单独 return; 结束函数;
3. 递归缺少终止条件会栈溢出;
4. 同名变量就近优先,局部屏蔽全局;
5. 值传递无法交换两个实参变量值,必须指针或引用。
更多推荐
所有评论(0)