Skip to content

C++变量

  • C++中的变量是指分配给内存位置的名称。它是程序中存储的基本单位。
  • 变量中存储的值可以在程序执行过程中被更改。
  • 变量只是给内存位置起的名称,对变量执行的所有操作都会影响该内存位置。
  • 在C++中,所有变量必须在使用之前声明。

如何声明变量?

变量声明的典型形式为:

Text Only
// 声明一个变量
type variable_name;

// 声明多个变量:
type variable1_name, variable2_name, variable3_name;

变量名称可以包含字母(大写和小写)、数字和下划线‘_’字符。然而,名称不能以数字开头。

Variables in C++

在上述图示中,

datatype: 可以存储在变量中的数据类型。 variable_name: 赋予变量的名称。 value: 变量中存储的初始值。

示例:

Text Only
// 声明浮点型变量
float simpleInterest; 

// 声明整数型变量
int time, speed; 

// 声明字符型变量
char var;  

我们也可以在声明变量时提供值,如下所示:

Text Only
int a=50,b=100;  //声明2个整数型变量    
float f=50.8;  //声明1个浮点型变量     
char c='Z';    //声明1个字符型变量   

声明变量的规则

  • 变量名称包含字母、数字和下划线。
  • 变量名称区分大小写(例如Arr和arr是不同的变量)。
  • 变量名称不能包含空格和特殊字符(例如#、$、%、*等)。
  • 所有变量名称必须以字母或下划线(_)开头。
  • 不能使用C++关键词(例如float、double、class)作为变量名。

有效的变量名称:

Text Only
int x;   //can be letters 
int _yz; //can be underscores   
int z40;//can be letters    

无效的变量名称:*

Text Only
int 89; 应该不能是数字   
int a b; //不应包含空格    
int double;// C++关键词不能使用

变量声明与定义的区别

变量声明 指的是首次声明或介绍变量的部分。变量定义 是分配内存位置和赋值的部分。通常,变量声明和定义一起进行。参考以下C++程序以获得更好的理解:

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;
}

输出

Text Only
a
  • 时间复杂度: O(1)

空间复杂度: O(1)

变量的类型

根据变量的作用域,C++中有三种类型的变量:

  • 局部变量
  • 实例变量
  • 静态变量

Types of Variables in C++

  • 让我们详细了解这些变量:

  • 局部变量

    : 在块、方法或构造函数内定义的变量称为局部变量。

    • 这些变量在进入块或调用函数时创建,并在退出块或函数返回时销毁。
    • 这些变量的作用域仅存在于声明它们的块内,即只能在该块内访问这些变量。
    • 局部变量的初始化不是强制性的,但建议初始化以确保在使用之前有定义的值。
  • 实例变量

    : 实例变量是非静态变量,在类中声明,但不在任何方法、构造函数或块中。

    • 实例变量在创建类的对象时创建,并在对象被销毁时销毁。
    • 与局部变量不同,我们可以为实例变量使用访问修饰符。如果未指定访问修饰符,则使用默认的访问修饰符。
    • 实例变量的初始化不是强制性的。
    • 实例变量只能通过创建对象来访问。
  • 静态变量

    : 静态变量也称为类变量。

    • 这些变量的声明方式类似于实例变量,但静态变量使用static关键字在类中声明,而不在任何方法、构造函数或块中。
    • 与实例变量不同,我们可以在类中只有一个静态变量的副本,无论创建多少个对象。
    • 静态变量在程序开始执行时创建,并在执行结束时自动销毁。
    • 静态变量的初始化不是强制性的,其默认值为0。
    • 如果像实例变量一样(通过对象)访问静态变量,编译器会显示警告消息,但不会中断程序。编译器会自动用类名替换对象名。
    • 如果在没有类名的情况下访问静态变量,编译器会自动附加类名。

实例变量与静态变量的比较

  • 每个对象将拥有自己的实例变量副本,而每个类中只有一个静态变量副本,无论创建多少个对象。
  • 使用一个对象对实例变量所做的更改不会反映在其他对象上,因为每个对象都有自己的实例变量副本。在静态变量的情况下,更改会反映在其他对象上,因为静态变量对所有对象都是共享的。
  • 我们可以通过对象引用访问实例变量,而静态变量可以直接使用类名访问
  • 静态变量和实例变量的语法:
Text Only
class Example
{
    static int a; // 静态变量
    int b;        // 实例变量
}

Comments