在C++中,常量是那些一旦被定义后,在程序运行过程中其值就不能被改变的量。C++提供了多种类型的常量,每种类型都有其特定的用途和表示方法。下面将逐一介绍整型常量,字符常量,逻辑常量,实型常量,地址常量,符号常量。
整型常量
整型常量是没有小数部分的数值,包括正数、负数和零。在C++中,整型常量可以是十进制、八进制(以0开头)、或十六进制(以0x或0X开头)的。
int a = 100; // 十进制整型常量
int b = 023; // 八进制整型常量,等价于十进制的19
int c = 0x1A; // 十六进制整型常量,等价于十进制的26
字符常量
字符常量是用单引号括起来的一个字符。在C++中,字符常量实际上是以整数形式存储的,即字符的ASCII码值。
char ch = 'A'; // 字符常量
逻辑常量
在C++中,逻辑常量通常指布尔常量,它们只有两种值:true 和 false。
bool flag = true; // 逻辑常量true
bool done = false; // 逻辑常量false
实型常量
实型常量即浮点常量,包括小数点和指数表示法。它们用于表示有小数部分的数值。
float pi = 3.14f; // 单精度浮点常量
double area = 2.71828; // 双精度浮点常量
long double e = 1.0e30L; // 长双精度浮点常量,使用指数表示法
地址常量
在C++中,通常不直接称某个值为“地址常量”,因为地址通常是由变量或数组名在编译时或运行时动态生成的。但是,指针常量(指向常量的指针或常量指针)可以被视为与地址常量相关的概念。一个指针常量一旦被初始化指向某个地址后,就不能再指向另一个地址,但可以通过指针修改它所指向的值(如果那个值不是常量的话)。
int var = 10;
int* const ptr = &var; // 指针常量,ptr不能再指向其他地址
符号常量
符号常量是通过#define预处理指令或const关键字定义的常量。与#define相比,const定义的常量有类型,更加安全。
#define PI 3.14159 // 预处理指令定义的符号常量
const double Pi = 3.14159; // 使用const关键字定义的符号常量
使用const定义的常量是类型安全的,编译器会进行类型检查,而#define定义的常量只是简单的文本替换,不进行类型检查。因此,在C++中推荐使用const来定义常量。
3. 掌握变量的定义与使用方法(变量的定义及初始化,全局变量,局部变量)
在C++中,变量是存储数据值的容器,它们具有特定的数据类型,用于指定可以存储在变量中的数据类型。变量的定义涉及为其指定一个名称(标识符)和数据类型。下面将详细介绍变量的定义与使用方法,包括变量的定义及初始化、全局变量和局部变量。
变量的定义及初始化
变量的定义包括指定其数据类型和名称。初始化是在定义变量的同时给它赋予一个初始值。
int a = 10; // 定义了一个整型变量a,并初始化为10
double pi = 3.14159; // 定义了一个双精度浮点型变量pi,并初始化为3.14159
char ch = 'A'; // 定义了一个字符型变量ch,并初始化为'A'
如果定义变量时没有初始化,那么它的初始值是未定义的(对于基本数据类型而言),这可能会导致不可预测的行为。但是,对于类类型的对象,如果没有显式初始化,则会自动调用其默认构造函数(如果存在的话)。
全局变量
全局变量是在函数外部定义的变量,它们在程序的整个执行期间都保持其值。全局变量可以被程序中的所有函数访问和修改(除非它们被声明为static,这将限制它们的可见性)。
#include <iostream>
int globalVar = 100; // 全局变量
void func() {
std::cout << "全局变量的值是: " << globalVar << std::endl;
}
int main() {
func(); // 访问全局变量
return 0;
}
局部变量
局部变量是在函数内部定义的变量,它们只能在定义它们的函数内部被访问和修改。当函数执行完毕时,局部变量的值会被销毁(对于自动存储期的变量而言)。
#include <iostream>
void func() {
int localVar = 20; // 局部变量
std::cout << "局部变量的值是: " << localVar << std::endl;
// localVar的作用域仅限于func函数内部
}
int main() {
func(); // 访问func函数中的局部变量(通过函数调用)
// 这里不能访问localVar,因为它在func函数内部定义
return 0;
}
变量的作用域和生命周期
作用域:变量在程序中可以被访问的区域。全局变量的作用域是整个程序,而局部变量的作用域是定义它的函数或代码块。
生命周期:变量从创建到销毁的时间段。全局变量的生命周期贯穿整个程序执行期间,而局部变量的生命周期则限于定义它的函数或代码块的执行期间。
静态变量
静态变量(无论是全局的还是局部的)在程序的整个执行期间只被初始化一次,并且它们的值在函数调用之间保持不变。静态局部变量在函数调用之间保持其值,而静态全局变量则限制了变量的可见性(通常用于限制变量在文件内的可见性)。
void func() {
static int staticVar = 0; // 静态局部变量,只在第一次调用时初始化
std::cout << "静态局部变量的值是: " << ++staticVar << std::endl;
}
// 静态全局变量的例子与全局变量类似,但通常与static关键字一起使用来限制可见性