一、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. 值传递无法交换两个实参变量值,必须指针或引用。

更多推荐