在程序运行过程中,其值不能被改变的量称为常量。常量也分为整型、实型、字符型等。常量就像是常规的变量,只不过常量的值在定义后不能进行修改。本文主要介绍C++中常量。

1、定义常量

在 C语言中,常量有两种定义方式,分别是使用 #defineconst

1)#define(宏定义)

#define  <宏名/标识符>  <字符串>

2)const

可以使用 const 前缀声明指定类型的常量:

const type variable = value;

例如,

#include <iostream>
using namespace std;
int main(){
  //常量方式1
  const int a = 18;
  cout << "我的年龄是"<< a << endl;
  const char nameStr[] = "cjavapy";
  const int age = 30;
  printf("我叫%s,%d岁\n",nameStr,age);
  //常量方式2  修改一次可以改变全局  define本质就是替换
#define X 100  //不能有;
  printf("数量%d个\n", X);
  cout << "数量" << X*X << "个" << endl;
#define PI 3.1415
  int R = 100;
  printf("周长=%f,面积=%f\n", 2 * R*PI, PI*R*R);//f是实数
#define name "cjavapy"
   cout << "关键字是%s"<< name;
  return 0;
}

2、const 与 #define 定义常量的区别

1)const 定义常量

不能直接修改,但是可以间接修改可以通过直接修改内存进行修改可以通过指针进行修改

2)#define 定义常量

不能通过指针进行修改,也不能通过内存进行修改,相当于真正意义的常量。

一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译,宏替换是简单的替换。

例如,

#include <iostream>
using namespace std;
#define VAR 10001
int main()
{
  const int var = 1001;
  cout << var;
  *(int *)(&var) = 101;// 转换常量指针为非常量指针,说明 constant 不算真正的常量
  cout << endl << var;
  cout << VAR;// 不能取地址进行修改
  return 0;
}

推荐文档