C++变量¶
- C++中的变量是指分配给内存位置的名称。它是程序中存储的基本单位。
- 变量中存储的值可以在程序执行过程中被更改。
- 变量只是给内存位置起的名称,对变量执行的所有操作都会影响该内存位置。
- 在C++中,所有变量必须在使用之前声明。
如何声明变量?¶
变量声明的典型形式为:
// 声明一个变量
type variable_name;
// 声明多个变量:
type variable1_name, variable2_name, variable3_name;
变量名称可以包含字母(大写和小写)、数字和下划线‘_’字符。然而,名称不能以数字开头。
在上述图示中,
datatype: 可以存储在变量中的数据类型。 variable_name: 赋予变量的名称。 value: 变量中存储的初始值。
示例:
我们也可以在声明变量时提供值,如下所示:¶
声明变量的规则¶
- 变量名称包含字母、数字和下划线。
- 变量名称区分大小写(例如Arr和arr是不同的变量)。
- 变量名称不能包含空格和特殊字符(例如#、$、%、*等)。
- 所有变量名称必须以字母或下划线(_)开头。
- 不能使用C++关键词(例如float、double、class)作为变量名。
有效的变量名称:
无效的变量名称:*
变量声明与定义的区别¶
变量声明 指的是首次声明或介绍变量的部分。变量定义 是分配内存位置和赋值的部分。通常,变量声明和定义一起进行。参考以下C++程序以获得更好的理解:
C++
// C++程序展示变量声明和定义的区别
#include <iostream>
using namespace std;
int main()
{
// 这是变量a的声明
int a;
// 这是对a的初始化
a = 10;
// 这是定义 = 声明 + 初始化
int b = 20;
// 变量'a123'的声明和定义
char a123 = 'a';
// 这也是声明和定义
// 因为'c'被分配了内存并
// 赋予了一些垃圾值。
float c;
// 多个声明和定义
int _c, _d45, e;
// 打印变量
cout << a123 << endl;
return 0;
}
输出
- 时间复杂度: O(1)
空间复杂度: O(1)
变量的类型¶
根据变量的作用域,C++中有三种类型的变量:
- 局部变量
- 实例变量
- 静态变量
-
让我们详细了解这些变量:
-
局部变量
: 在块、方法或构造函数内定义的变量称为局部变量。
- 这些变量在进入块或调用函数时创建,并在退出块或函数返回时销毁。
- 这些变量的作用域仅存在于声明它们的块内,即只能在该块内访问这些变量。
- 局部变量的初始化不是强制性的,但建议初始化以确保在使用之前有定义的值。
-
实例变量
: 实例变量是非静态变量,在类中声明,但不在任何方法、构造函数或块中。
- 实例变量在创建类的对象时创建,并在对象被销毁时销毁。
- 与局部变量不同,我们可以为实例变量使用访问修饰符。如果未指定访问修饰符,则使用默认的访问修饰符。
- 实例变量的初始化不是强制性的。
- 实例变量只能通过创建对象来访问。
-
静态变量
: 静态变量也称为类变量。
- 这些变量的声明方式类似于实例变量,但静态变量使用static关键字在类中声明,而不在任何方法、构造函数或块中。
- 与实例变量不同,我们可以在类中只有一个静态变量的副本,无论创建多少个对象。
- 静态变量在程序开始执行时创建,并在执行结束时自动销毁。
- 静态变量的初始化不是强制性的,其默认值为0。
- 如果像实例变量一样(通过对象)访问静态变量,编译器会显示警告消息,但不会中断程序。编译器会自动用类名替换对象名。
- 如果在没有类名的情况下访问静态变量,编译器会自动附加类名。
实例变量与静态变量的比较¶
- 每个对象将拥有自己的实例变量副本,而每个类中只有一个静态变量副本,无论创建多少个对象。
- 使用一个对象对实例变量所做的更改不会反映在其他对象上,因为每个对象都有自己的实例变量副本。在静态变量的情况下,更改会反映在其他对象上,因为静态变量对所有对象都是共享的。
- 我们可以通过对象引用访问实例变量,而静态变量可以直接使用类名访问。
- 静态变量和实例变量的语法: