结合之前的内容,以下3个方向作为“基础语法的补充说明”,不属于核心必学,但能帮你避免入门常见问题:
一、变量的“作用域”与“生命周期”
之前未明确变量的有效范围,这是入门易混淆点:
#include <iostream>
using namespace std;
int globalVar = 10; // 全局变量:整个程序有效
int main() {
int localVar = 20; // 局部变量:仅main函数内有效
{
int blockVar = 30; // 块变量:仅当前大括号内有效
cout << blockVar << endl; // 正常输出30
}
// cout << blockVar << endl; // 报错:blockVar已超出作用域
cout << localVar << endl; // 正常输出20
cout << globalVar << endl; // 正常输出10
return 0;
}
核心点:全局变量在所有函数外定义,程序全程有效;局部/块变量在函数/代码块内定义,出范围后自动销毁。
二、const 修饰符(常量定义)
用于定义“不可修改的值”,避免误操作:
#include <iostream>
using namespace std;
int main() {
const int MAX_AGE = 120; // const修饰的变量,值不可改
// MAX_AGE = 130; // 报错:常量不能修改
const int* p = &MAX_AGE; // 指针指向常量,不能通过指针改值
// *p = 140; // 报错
return 0;
}
核心点:const
修饰的变量必须初始化,后续无法修改,常用于定义固定值(如最大值、常量参数)。
三、数组的补充:动态数组与边界注意
之前仅讲静态数组,补充动态数组(用new申请内存):
#include <iostream>
using namespace std;
int main() {
int n = 5;
// 动态数组:根据变量n的大小,在运行时申请内存
int* arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = i + 1; // 赋值1~5
}
for (int i = 0; i < n; i++) {
cout << arr[i] << " "; // 输出1 2 3 4 5
}
delete[] arr; // 动态数组使用后必须释放内存,避免内存泄漏
return 0;
}
核心点:静态数组大小必须是常量(如int arr[5]
),动态数组大小可在运行时确定,但需手动释放内存;数组无边界检查,访问arr[10]
(超出大小)会导致错误,需自行控制索引范围。
THE END