一、变量声明

变量声明就是告诉编译器你要使用一个什么类型的变量,并为它分配内存空间。声明变量的基本语法如下:

类型 变量名;

示例:

int age;
double price;
char grade;

此时,age 是一个整型变量,price 是一个双精度浮点型变量,grade 是一个字符型变量。


二、变量初始化

变量初始化就是在声明变量的同时给它赋一个初始值。初始化可以在声明时进行,也可以在声明后赋值。

1. 声明时初始化

int age = 18;
double price = 99.99;
char grade = 'A';

2. 声明后赋值(赋值不是初始化)

int age;
age = 18;

三、C++中的初始化方式

C++ 支持多种初始化方式,主要有以下几种:

1. 括号初始化(构造函数风格)

int a(10);
double b(3.14);

2. 等号初始化(拷贝初始化)

int a = 10;
double b = 3.14;

3. 列表初始化(C++11 引入)

int a{10};
double b{3.14};
int c{}; // 初始化为0

注意:

  • 列表初始化可以防止窄化(narrowing)转换,比如 int a{3.14}; 会报错。
  • int c{}; 这种写法会将变量初始化为0。

四、未初始化变量的风险

  • 局部变量(在函数内部声明的变量)如果没有初始化,其值是未定义的(随机值)。
  • 全局变量静态变量如果没有初始化,会被自动初始化为0。

示例:

void func() {
    int x; // 未初始化,值不确定
    std::cout << x << std::endl; // 可能输出任意值
}

五、常量声明与初始化

常量必须在声明时初始化,且值不能再改变。

const int maxSize = 100;

六、auto 关键字(类型自动推断,C++11)

auto x = 10;      // x 被推断为 int
auto y = 3.14;    // y 被推断为 double
auto z = 'A';     // z 被推断为 char

七、总结

  • 声明:告诉编译器变量的类型和名字。
  • 初始化:为变量赋初值。
  • C++ 支持多种初始化方式,推荐使用列表初始化({})以避免隐式类型转换带来的问题。
  • 局部变量未初始化会有随机值,需注意。