primer学习笔记2 const

原创 2006年06月09日 02:30:00

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;

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

c++primer学习笔记(3)-Compound Types(pointers and references) and const Qualifier.

1. The concept of Compound Types: A compound type is a type that is defined in terms of another typ...

C++ Primer Plus学习笔记之const修饰指针

《C++ Primer Plus》学习笔记之const修饰指针 首先来谈一下const与define的区别,大家都知道两者都可以定义常量,但是define有一个明显的缺陷:没有类型信息; 例如: #...

[C++ Primer Plus学习笔记Ⅱ]const的用法归纳与整理

const的用法 可以用两种不同的方式将const关键字用于指针。第一种方法是让指针指向一个常量对象, 这样可以防止使用该指针修改所指向的值,第二种方法是将指针本身声明为常量, 这样可以防止改变...

C++ Primer 学习笔记与思考_8 指针和const的那些麻烦

(一)数组的下标和指针的关系 我们以前知道,在表达式中使用数组名时,实际使用的是指向数组第一个元素的指针。当我们使用下标访问数组时,实际上是对指向数组元素的指针做下标操作,只要数组指向数组元素,就可...

c++primer学习笔记-----2.4const限定符

const 限定符的核心价值就是防止误操作改变了不须改变的变量的值 const 对象一旦创建后就不能发生任何改变,因此必须在定义的同时进行初始化(字面值、任意表达式均可) const 对象的文件间共享...

C++ Primer 学习笔记与思考_4 ---getline&&size_type&&const_iterator混搭

(一)getline的用法     我们在使用string读入字符串的时候,其输入操作符: * 读取并忽略开头所有空白字符(如空格,换行符,制表符) * 读取字符直至再次遇到空白字符,读取终止。...

2012/2/7 《C++ Primer Plus》第十六章:string类和标准模板库 学习笔记

《C++ Primer Plus》第十六章学习笔记 这一章粗略介绍了一下STL和泛型编程,我也是粗略地看了一看。   181:String类构造函数:   182:关于输入: C风格字...

C++ Primer 学习笔记(2)

迭代器简介  我们除了使用下标访问 vector 对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器(iterator)。 1、容器的 iterator 类型 每种容器类型都定义了...

C++ Primer学习笔记(2)—字符串string类的使用

学过一点C语言的人都知道,字符串操作是不可避免的,但C语言中字符串操作起来比较麻烦,比如两个字符串比较、连接、对串中某个字符进行操作等,需要调用相应地函数。而C++中,由于类概念的引入,在string...

顺序容器 - 2【C++ Primer 学习笔记 - 第九章】

list ilist(10); // 空容器:*ilist.begin() 无法解引用 // 空容器:back()、front() 操作,未定义 if(!ilist.empty()) { list:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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