一、c++ 程序的基本结构
一个完整的 C++ 程序至少包含头文件、主函数(程序入口),复杂程序会增加自定义函数、类等。
最小示例(Hello World)
#include // 头文件:包含输入输出流功能using namespace std; // 命名空间:避免函数/变量命名冲突int mAIn() { // 主函数:程序执行的起点,int表示返回整数类型cout <, C++!" <; // 输出语句:cout是输出流对象,endl换行return 0; // 返回0表示程序正常结束}
头文件:以#include开头,提供预定义功能(如iostream负责输入输出,cmath提供数学运算)。
命名空间:using namespace std;可直接使用std命名空间下的成员(如cout、cin),也可省略该语句,用std::cout显式调用。
主函数:main()是唯一必须的函数,程序从这里开始执行,返回值传递给操作系统。
二、数据类型与变量
C++ 数据类型分为基本类型和复合类型,变量需先声明再使用。
1. 基本数据类型
类型 | 说明 | 占用空间(32 位系统) | 示例 |
int | 整数类型 | 4 字节 | int age = 20; |
double | 双精度浮点数(小数) | 8 字节 | double score = 95.5; |
float | 单精度浮点数 | 4 字节 | float pi = 3.14f; |
char | 字符类型(ASCII 码) | 1 字节 | char ch = 'A'; |
bool | 布尔类型(真 / 假) | 1 字节 | bool isPass = true; |
2. 变量声明与初始化
声明:指定类型和变量名,如int num;
初始化:声明时赋值,推荐方式:
int a = 10; // 传统初始化int b{20}; // 列表初始化(C++11+,更安全)double c = 3.14;char d = 'B';三、运算符
1. 算术运算符
+(加)、-(减)、*(乘)、/(除)、%(取余,仅用于整数)
int x = 10, y = 3;cout < + y < 13cout << x / y < // 3(整数除法,舍弃小数)cout << x % y <; // 1(10除以3的余数)
2. 赋值运算符
=(赋值)、+=、-=、*=、/=
int a = 5;a += 3; // 等价于a = a + 3 → a=8a *= 2; // 等价于a = a * 2 → a=16
3. 比较运算符(返回 bool 值)
==(等于)、!=(不等于)、>(大于)、<(小于)、>=、`
bool isBig = (10 > 5); // truebool isEqual = (3 == 4); // false
4. 逻辑运算符
&&(逻辑与,都真才真)、||(逻辑或,一真则真)、!(逻辑非,取反)
bool res1 = (true && false); // falsebool res2 = (true || false); // truebool res3 = !true; // false
四、控制流语句
1. 条件语句(if-else)
根据条件执行不同代码块:
int score = 85;if (score >= 90) {cout << "优秀" << endl;} else if (score >= 60) {cout << "及格" < // 执行此分支} else {cout << "不及格" <;}2. 循环语句
(1)for 循环(适合已知循环次数)
// 循环10次,输出0-9for (int i = 0; i 10; i++) {cout << i << " ";}结构:for(初始化; 循环条件; 迭代器),条件为true时执行循环体。
(2)while 循环(适合未知循环次数)
int num = 1;// 输出1-5while (num 5) {cout << num < num++; // 避免死循环,必须更新条件变量}(3)do-while 循环(至少执行一次)
int n = 1;do {cout << n < 先执行一次,再判断条件n++;} while (n 3); // 输出1 2 33. 跳转语句
break:跳出当前循环或 switch 语句。
continue:跳过本次循环剩余部分,进入下一次循环。
// 输出1-10中的奇数for (int i = 1; i ; i++) {if (i % 2 == 0) {continue; // 偶数跳过}cout << i < // 1 3 5 7 9}五、函数
函数是可复用的代码块,减少冗余,结构:返回类型 函数名(参数列表) { 函数体 }
1. 函数定义与调用
// 定义一个加法函数,返回两数之和int add(int a, int b) {return a + b; // 返回值}int main() {int result = add(3, 5); // 调用函数,传入参数3和5cout <5=" << result <; // 输出8return 0;}2. 函数声明(原型)
若函数定义在 main 之后,需先声明:
int add(int a, int b); // 函数声明(原型)int main() {int res = add(2, 4); // 可正常调用return 0;}int add(int a, int b) { // 函数定义return a + b;}六、数组(存储相同类型的集合)
1. 数组声明与初始化
// 方式1:指定大小并初始化int arr1[5] = {1, 2, 3, 4, 5}; // 大小5,元素为1-5// 方式2:省略大小,由初始化列表决定int arr2[] = {6, 7, 8}; // 大小3// 方式3:部分初始化,剩余元素为0int arr3[4] = {9, 10}; // 元素为9,10,0,02. 访问数组元素(通过下标,从 0 开始)
int arr[3] = {10, 20, 30};cout <] <10(第一个元素)cout <] <30(第三个元素)arr[1] = 25; // 修改第二个元素为25七、指针(存储变量地址的变量)
1. 指针声明与使用
&:取地址运算符,获取变量地址。
*:解引用运算符,通过地址访问变量值。
int num = 100;int* p = # // p是指针变量,存储num的地址cout << &num << endl; // 输出num的地址(如0x7ffeefbff4ac)cout < <输出p存储的地址(与上一行相同)cout << *p <; // 解引用,输出100(通过地址访问num的值)*p = 200; // 通过指针修改num的值cout << num <输出200
2. 空指针(避免野指针)
int* ptr = nullptr; // C++11+推荐,空指针(指向无效地址)
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
