primer学习笔记2 const

来源:互联网 发布:淘宝七了个三买家秀 编辑:程序博客网 时间:2024/05/22 11:38

const
把一个对象转换成一个常量(constant)
例如  const int size =10;
size的值将不能改变,在程序中任何改变这个值的企图都将导致编译错误。
因此称为只读(read——only)属性
因为常量在定义后就不能被修改,所以必须被初始化,否则将导致错误。


被const修饰过的对象可以被指针指向,但是必须是const类型的指针,这么说可能有些晦涩。换个说法,指针可以指向const类型的对象,但是必须是const类型的指征。
定义一个const类型的指针 
const int *pi

这是由于指针的超灵活性,比如你可以直接修改地址里的值,而便机器却不管用于那个地址的值是不是属于const类型的,所以任何“试图将一个非const对象的指针指向一个常量对象” 的动作都将引起编译错误,从语法上限制,呵呵。

来看
const int *pi
pi是一个指向int类型的,被定义成const的对象的指针。
不过pi指向的对象不能被修改,但是pi可以重新被赋值指向其他对象。

const对象的地址只能赋值给指向const对象的指针。但是,指向const对象的指针可以被赋给一个非const对象的地址,不过不能通过它修改它所指向的地址的指。
把一个const指针指向一个对象(const或者非const类型都可行,反正都没办法改,)//目前关于这点,尚不太理解,                                                                                                                                    //有些说法没有完全理解  

int *const pi = &i  // int i;


pi是指向一个非const对象(或许const对象,看i而定)的cont指针

实际应用中,指向const的指针常被用作函数的形参,用来作为一个约定的保证。
如  int strcmp(const char *str1,const char *str2);

指向const对象的const指针的定义是把const对象的定义 和 指向const对象的指针的定义结合起来
定义const对象    const int i
定义const指针    const int *const pi =  &i   // const int i;

原创粉丝点击