const关键字

1定义常量(定义常量必须初始化)

const int ival=10;

int const ival=10;//和上面的等价

2定义指向常量的指针(常量指针)

int a=10;

const int *pa=&a  //pa可以改,但是所指向的内容不能修改

3定义指针常量

int b;

int *const pb=&b; //pb指向对象不能改,当时可以改内容

4定义指向常量的指针常量

const int a=10;

const int *const *pa=&a; //什么都不能修改,pa也可以指向一个非const的值

例如 int a=10 ;

const int *const *pa=&a;

C++中的const 和c中的define区别

(1)编译器处理方式不同

define 在预处理阶段展开

const常量在编译运行阶段使用

(2)类型和安全检查不同

define 没类型检查,仅仅是展开

const 常量有具体的类型,编译阶段会执行类型检查


#include <iostream>
//using namespace std;
#define MAX 100//宏定义:是在编译期间进行的字符串的替换
//没有类型检查,它会把错误发生的时机推迟到运行期
int main(void)
{
 const int ival = 10;//首先要进行初始化  10是literal(字面值)
 //使用const修饰的常量在编译期是具有类型的,
 //它可以将错误的发生在编译就确定下来
 std::cout << "ival = " << ival << std::endl;
 int ival2 = 20;
 const int ival3 = ival2;//通过一个变量来对常量进行初始化
 std::cout << "ival3 = " << ival << std::endl;
 const int *p2 = &ival2;//表示p2指针所指向的内容不能被修改
 //*p2 = 30;//Error
 int const *p3 = &ival2;//表示p3指针所指向的内容不能被修改 //(pointer to const)
 //*p3 = 30;//Error
 std::cout << "*p3 = " << *p3 << std::endl;
 int * const p4 = &ival2;//表示p4指针本身的值不能被修改 //(const pointer)
 *p4 = 40;
 std::cout << "*p4 = " << *p4 << std::endl;
 std::cout << "ival2 = " << ival2 << std::endl;
 int ival4 = 50;
 //p4 = &ival4;//Error
 p3 = &ival4;
 std::cout << "*p3 = " << *p3 << std::endl;
 const int * const p5 = &ival4;
 int const * const p6 = &ival4;
 //*p5 = 60;
 //p5 = &ival;
 return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值