const常量详解

const常量的定义

在C语言中,采用编译指令#define方法定义常量,例如

#define PI 3,14

由于编译指令#define不是C++语句,所以行末不用分号,程序在预编译时把出现标识符PI全部用3,14替换,在程序预编译结束后,程序中就不再拥有PI这个标识符

PI不是变量,没有类型,不占用存储单元。

在C++中使用const定义常量有两种方式:

方式1:

const 类型 常量名 = 初始值;

例如:const  double PI = 3,14;

方式2:

类型 const 常量名 = 初始值;

例如:double const PI = 3,14;

两种方式习惯上使用第一种。这里的PI拥有变量所有的属性,包含变量名,变量值,地址,只是在程序运行的过程中是固定不变的,只能读不能修改。

所以使用const定义常量后,由于值不能修改,不能赋值,所以在定义常量是就必须初始化,例如

const double pi;

pi = 3.14;  //err

const 指针

1、指向常量的指针(常量指针)

	//常量指针
	const char* name = "liuzeyu12a";  //name指针指向一块常量
	name = "helloworld";  //此时name又重新执行了新的内存,指向h
	//*name = 'p';  //不能给常量赋值,所以const用来保护指针所指向的值不被修改
	printf("%c\n", *name);  //输出h

指针的指向可以被修改,但是指向的值不能被修改。

2、指针常量

这里演示一种错误的方式:

 

	//指针常量
	//char str[] = "liuzeyu12a";
	//char* const pc = str;
	char* const pc = "liuzeyu12a";   //指向常量
	//pc = "helloworld"; //指针的指向不能被修改
	*pc = 'G';
	printf("%c ", *pc);

 

常量是不能够被修改的 = =

正确的方法:

 

	//指针常量
	char str[] = "liuzeyu12a";
	char* const pc = str;
	//pc = "helloworld"; //指针的指向不能被修改
	*pc = 'G';
	printf("%c ", *pc);   //输出G

 

指针指向不能被修改,但是指向的值可以被修改,这个被修改的一定只能是变量,常量不能够被修改。

3、指向常量的指针常量

		int a = 10, b = 20;
		const int* const pt = &a;
		pt = &b;  //err
		*pt = 100; //err

 指针的指向和指针所指向变量的值都不能被修改。

转载于:https://www.cnblogs.com/liuzeyu12a/p/10542536.html

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值