关键字const在c和c++中的区别和运用

18 篇文章 0 订阅

c语言中const是修饰变量使得变量为只读,但这里的只读无非就是不能作为左值被直接赋值 ,然而也是可以通过指针来改变的

但是在c++中const只是定义一个带名字(name)的常量而已,编译器会把(name)和值作为标志符写入一个表中,用的时候再去表中取值使用,当有指针试图修改(name)的时候,编译器会为(name)分配空间,但是表中的(name)和它的值依然没有改变,用的时候还是从表中取值,而不是从分配的内存空间取值

c代码如下

/*const.c*/
#include <stdio.h>
int main()
{
	const int name=1;
	int *p;
	p=&name;
	/*name=3,其实这样是非法的,const修饰的变量只读不能作为左值写入*/
	*p=3;     /*合法的操作*/
	printf("name=%d\n",name);
	printf("*p=%d\n",*p);
	return 0;
	
}

打印结果是name=3
*p=3;

c++代码如下

/*const.cpp*/
#include <stdio.h>
int main()
{
	const int name=1; /*在c++中name就是一个常量而已,把neme和1存入表中*/
	int *p;
	p=(int *)&name;         /*开始为name分配空间    注意类型转换,否则报错*/
	*p=3;     /*合法的操作,空间中值为3*/
	printf("name=%d\n",name); /*其实还是从表中取值,为1*/
	printf("*p=%d\n",*p);    /*从分配的空间中取值3*/
	return 0;
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值