Const(定义常变量)的四个重要性质

原创 2018年04月16日 22:43:40

1.将变量变成只读

定义一个变量a,并赋初值10,变量a既可以被重新赋值,又可以被读取:

int a= 10;
a = 20;
int b = a;

这时变量a被称为左值,它具有可以被赋值和读取两种属性

倘若定义常变量a,试着重新赋值和读取:

可以看到编译器报错,const将变量a变成了右值,即只可被读取,不能写入(重新赋值)


2. 数据类型对于const而言是透明的

观察1,const写在int后面,那么数据类型是否会影响const的作用?:

显而易见,数据类型不会影响const


3. const修饰它的直接右边,不能做左值

int a = 10;
int b = 20;
const int * p= &a;
p = &b;        //指针变量p做左值,被重新赋值为b的地址,说明const并没有对指针p作用
*p = 30;       //由于数据类型对于const是透明的,所以const作用于*p,可以看到*p不能做左值,因为它不能被重新赋值
	
int * pp = &a;
*pp = *p;       //可以看到被const修饰的变量,不能再做左值,只能用来被读取


4.权限可以同等或者缩小传递,但不能放大传递

const int b = 20;
const int *p = &b;         //同等传递:此时b不能做左值,*p也不能做左值,倘若int * const p,则是错误的,因为*p是可以做左值的,这样的话b的值可以被修改,因此不合法
const int * const p = &b;  //缩小传递:p和*p都不能做左值,这样就保证了b的值不会被修改
int * const p = &b;        //放大传递:这种传递是不合法的,因为const修饰指针变量p,但是*p可以做左值,可以修改b的值

乱码大全(五)

 1. GB码和Big5码    GB码是中国大陆、新加坡等国家和地区使用的一种汉字编码方法。Big5码是中国台湾省用的一种汉字编码方法。它们的编码方法是完全不同的两种方法,它们之间的转换只能通过“查...
  • neil
  • neil
  • 2001-08-31 02:03:00
  • 2755

c++中const基本用法(常变量、常指针、常对象)

一:常变量                  在定义变量时,如果加上关键字const,则变量的值在运行期间不能改变,这种变量就称为常变量(constant  variable),又称只读变量,在定义...
  • u010567180
  • u010567180
  • 2013-05-16 19:57:53
  • 352

iOS- define宏定义和const常变量区别

define宏定义和const常变量区别: 1.define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存...
  • xiaohe901216
  • xiaohe901216
  • 2016-07-15 11:30:59
  • 423

常量和常变量(const)

常量和常变量const
  • CSDN_LSD
  • CSDN_LSD
  • 2017-09-18 02:19:46
  • 567

变量定义与const变量定义

变量定义与const变量定义 一般变量1)一个整型数 int a2)一个指向整型数的指针 int *a3)一个指向指针的指针,它指向的指针是一个整型数int **a4)一个有10个整型数的数组 int...
  • yzhang6_10
  • yzhang6_10
  • 2016-03-26 23:06:06
  • 1433

静态变量(static变量)和常量(const 类型)

在c\c++中,静态变量(static)和常量(const)很容易混淆,本文通过一点粗浅的认识,写写static和const. 常量(const 类型) const类型的值是不能被修改的,...
  • Aoulun
  • Aoulun
  • 2016-12-01 20:38:31
  • 3330

C++的全局变量,静态全局变量,常全局变量定义与声明

头文件中变量如果没有初始化就是声明;初始化了就是定义。在C++语言中,变量有且只能有一次定义,但是可以声明多次,使用变量前必须定义或声明。 再说到这些变量的声明与定义前,要知道这些变量的链接性: 外部...
  • u010177010
  • u010177010
  • 2016-03-07 09:28:57
  • 2699

AVR在IAR中将常量仅定义在FLASH上的细节

1)看一个普通的定义 不用说,这种情况是肯定是test是在RAM中了 char test[] = "Put String In Flash";如果是ARM平台的话,加个const就放到FL...
  • EmbededSwordman
  • EmbededSwordman
  • 2012-03-03 11:14:33
  • 8782

const常类型定义与使用

const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。 用法:unsigned char const 变量名; 例如:unsigned char chost max=100; ...
  • qintaiwu
  • qintaiwu
  • 2017-05-21 10:05:47
  • 279

JS中声明变量的三种方式 const var let

在JavaScript中有三种声明变量的方式:const var let。 const:用于声明常量。注意:定义的变量的时候,必须同时初始化,且其值之后不可以修改。 var:最常用的声明变量关键字。...
  • mengyuying16
  • mengyuying16
  • 2017-02-07 15:29:05
  • 2626
收藏助手
不良信息举报
您举报文章:Const(定义常变量)的四个重要性质
举报原因:
原因补充:

(最多只允许输入30个字)