常量与变量

2023/10/16

在上节课中我们简单学习了 C++的基本结构,掌握了基本输出,但是当输出较多时需要些很多的具体值,并不方便书写,同时因为是具体的值,我们也无法在打印之前进行数据的处理,那么此时我们该怎么办呢?
那么此时我们就需要了解常量与变量的概念。

C++是一种强大的编程语言,允许您创建和操作常量和变量来存储和处理数据。常量和变量是 C++中的基本概念,它们有不同的含义和用途。现在让我们简单了解一下它们的定义和概念:

变量(Variables) 是 C++ 语言中非常重要的概念,可以将整体看作一个「盒子」,每个「盒子」中都可以储存一定的数值。这个盒子本身有两个重要的属性:

  1. 变量类型(Variable Type):它说明了每个「盒子」是多大的,约定装什么样的东西。「盒子」有许多不同的类型,如「盒子」可以是只能装下苹果的小盒子,也可以是装下西瓜的大盒子等。变量类型一旦创建就不能修改,但「盒子」里的数值是可以改变的。

  2. 变量名(Variable Name):它说明了可以怎么称呼这个「盒子」,每个「盒子」都有一个属于自己的变量名。同样地,变量名一旦创建,以后也不能修改(注意,变量名必须以字母或下划线 _ 开头,中间只能包含字母、下划线和数字)。

下图所示的这个「盒子」是一个名为 numberint 类型变量,它的变量值为 2。int 类型表示的是整数(integer),通常占 4 字节大小。

1

那么我要如何使用 int 类型的变量呢? 通过声明语句和赋值语句对 int 类型的变量进行定义之后就可以使用了。

变量的 声明语句 是由变量类型、变量名及分号组成。例如,int 表示这个变量的类型,number 表示这个变量的名称。

int number;

请注意,在变量的声明语句中可以直接对变量进行赋值,可以采用如下的写法:

int number = 2;

关于赋值语句的介绍将在下节介绍

同一个变量名在整个代码段中只能被声明一次,一旦声明后,可以进行多次的赋值操作,使变量的值随着程序的执行而改变。变量在赋值之后才能参与其他运算或输出。在输出变量的值时,只需要在 cout << 后直接跟变量名,不需要再像前面一样在代码中加双引号。例如:

cout << number << endl;

这样就可以输出变量 number 的值。

常量(Constants) 同样是 C++ 语言中非常重要的概念,可以将它看作一个「封闭的盒子」,每个「封闭的盒子」中都包含一个不可更改的数值。常量也具有两个主要属性:

  1. 常量类型(Constant Type):它指明了每个「封闭的盒子」的性质,即这个盒子里包含的是什么。常量类型是不可更改的,一旦确定,就不能修改,而盒子中的数值是固定的。

  2. 常量名称(Constant Name):它是用来标识这个「封闭的盒子」的唯一名称。和变量一样,常量名也必须遵循特定的命名规则,以确保它的唯一性。

常量的声明语句也包括常量类型、常量名以及可选的初始值,类似于变量的声明。以下是常量声明的示例:

const double PI = 3.14159265359;

在这个示例中,const表示这个标识符是一个常量,double表示常量的数据类型,PI是常量的名称,而3.14159265359是常量的初始值。

与变量不同,常量在声明时必须立即赋予一个初始值,而且这个值在整个程序的生命周期中是不可更改的。这意味着一旦常量被赋予初始值,它就不能再次赋予不同的值,这是常量的核心特性。

要输出常量的值,您可以使用如下代码:

cout << PI << endl;

这将输出常量 PI 的值,它的值为 3.14159265359。与输出变量的值类似,不需要使用双引号将常量名括起来。

在声明上常量与变量也存在着一定的区别:
常量和变量的声明在形式上有相似之处,但它们之间有重要的区别。让我来解释:

变量声明:

  • 变量声明是指在程序中声明一个变量,以告诉编译器变量的存在,并指定变量的数据类型和名称。
  • 变量声明通常包括变量类型、变量名,以及可选的初始值。
  • 一旦变量声明后,您可以多次使用该变量,并且可以在程序中多次给它赋予不同的值。
  • 例如:
    int myVariable; // 声明一个整数变量
    

常量声明:

  • 常量声明是指在程序中声明一个常量,以指定常量的数据类型、名称和初始值。
  • 常量声明通常包括常量类型、常量名,以及必须的初始值。
  • 一旦常量声明后,常量的值不能再次更改,它在整个程序的生命周期内保持不变。
  • 例如:
    const double PI = 3.14159265359; // 声明一个双精度浮点数常量PI
    

虽然常量和变量的声明形式类似,但它们在行为上有明显的差异。变量允许您在程序执行期间多次更改其值,而常量一旦赋值就无法更改。这是常量和变量之间的主要区别。此外,使用const关键字来声明常量是一种明确的方式,表明该值不应更改,而不带const的变量声明不具备这种不可更改的特性。

# 常量和变量的区别

变量可以在程序中的不同地方多次赋值,而常量一旦赋值,其值不可更改。 常量通常用于存储不可更改的值,例如数学常数或程序中的固定配置。变量用于存储需要在程序执行期间更改的数据。 使用常量和变量可以使您的程序更加灵活,能够存储和操作各种类型的数据。根据您的需求,您可以选择使用变量来存储可变数据或使用常量来表示不可更改的值。

小练习 声明一个常量与变量,并打印常量赋的初始值

答案
#include <iostream>
using namespace std;
int main() {
    int myVariable;
    const double PI = 3.14159265359;
    cout << PI << endl;
    return 0;
}

小练习 声明一个常量值为"Hello, World!"同时打印出其值的字节大小
小提示 可以使用 strlen 函数(需要包含 <cstring> 头文件) 示例

// 需要在头文件引入
<cstring>
// 字节大小
strlen(str)
答案
#include <iostream>
#include <cstring>
using namespace std;
int main() {
    const char* myString = "Hello, World!";
    cout << "字节: " << strlen(myString) << endl;
    return 0;
}

为啥声明这个常量时用的 char*而不是 char?

在 C++中,字符串通常以字符数组(char[])或指向字符的指针(char*)的形式表示。当您使用字符串字面值(如 "Hello, World!")时,编译器会将其解释为指向字符的指针,因此通常声明字符串常量时使用 char*const char* 更为常见。

  1. char*char* 表示指向字符的指针,通常用于指向以 null 终止的字符串。当您使用字符串字面值时,编译器会自动将其解释为指向字符串的指针。这允许您更容易处理字符串的各种操作,例如拼接、复制等。

  2. char[]char[] 表示字符数组,也可以用于存储字符串。您可以在字符数组中明确指定每个字符,例如 char myString[] = "Hello, World!";。但请注意,这种方式通常用于数组的大小已知的情况,而不适用于字符串字面值。

在上述示例中,使用 const char* 是因为字符串字面值是不可更改的,因此我们声明一个指向不可更改字符串的指针以确保字符串内容不会被修改。如果您需要在代码中修改字符串内容,可以使用可变字符数组(char[])。

总之,使用 const char* 表示字符串常量是一种通用的做法,适用于大多数情况下,因为它具有灵活性和安全性。

# 重点小结

  • 变量(Variable):

    • 定义: 变量是一种用于存储和表示数据的标识符,它可以在程序执行过程中的不同时间保存不同的值。
    • 概念: 变量是可变的,可以用于存储各种数据类型,例如整数、浮点数、字符等。在 C++中,您必须在使用变量之前声明它们,以指定变量的数据类型和名称。变量的值可以根据需要更改。
  • 常量(Constant):

    • 定义: 常量是一种具有固定值的标识符,它在程序执行期间保持不变。
    • 概念: 常量是不可变的,一旦赋予初始值,就无法更改。在 C++中,您可以使用const关键字来声明常量,或者使用枚举来定义一组相关的常量。
  • 常量类型、变量类型: 一旦创建就不能修改,约定了其值类型

  • 常量名称、变量名称: 名称一旦创建,以后也不能修改(注意,名称必须以字母或下划线 _ 开头,中间只能包含字母、下划线和数字)

在声明语句时常量与变量的类型与名称规则概念是一样的

  • 常量和变量的区别:
    • 变量可以在程序中的不同地方多次赋值,而常量一旦赋值,其值不可更改。
    • 常量通常用于存储不可更改的值,例如数学常数或程序中的固定配置。变量用于存储需要在程序执行期间更改的数据。
上次更新: 2024-10-19 10:01:51