参见这里 ==> http://www.cnblogs.com/xfxsworld/archive/2008/01/30/1059303.html
常量指针与指针常量
常量指针,就是指向常量的指针,关键字 const 出现在 * 左边,表示指针所指向的地址的内容是不可修改的,但指针自身可变。
指针常量,指针自身是一个常量,关键字 const 出现在 * 右边,表示指针自身不可变,但其指向的地址的内容是可以被修改的。
如何记忆:写法和读法是一致的
const常量 char*指针
char*指针 const常量
例:
常量指针: const char* ptr = “hello”
指针常量: char* const ptr = str_arr
注意:另外常量指针有两种写法:const既可写在类型前,又可写在类型后。如上面的例子,常量指针:char const * ptr = “hello” 也是正确的。
注意:上面例子中指针常量如果定义成char* const ptr = "hello",则仍然不能改变指向的内容,因为内容在const区
#include<iostream> using namespace std; int main(){ char* const ptr = "hello"; //*(ptr)=99; //非法写const区报错 cout<<endl; char arr[4]={'a','b','c',0}; char* const ptr2 = arr; cout<<ptr2<<endl; *(ptr2+1)='z'; cout<<ptr2<<endl; }
*************************************************************************************************************************************
常量迭代器与迭代器常量
再举个例子,看看迭代器是怎么用const的:
1. 迭代器const_iterator所指向的element只读不能写
* Iter = 10 ; // 错误,Iter是常量指针
Iter ++ ; // 正确
2. const iterator则迭代器本身只读(指向的element可变),则可以这样写:
* Iter = 10 ; // 正确
Iter ++ ; // 错误,指针本身不可变
3. const const_iterator则迭代器本身只读,指向的element也只读。很无聊的语法题:(
* Iter = 10 ; // 错误,Iter是常量指针
Iter ++ ; // 错误,指针本身不可变
版权声明 :本篇为原创文章,允许转载,但转载时请务必以超链接形式标明文章的原始出处和作者信息。请尊重本人的劳动成果,谢谢!
小祥的BLOG http://xfxsworld.cnblogs.com
------------------------------------------------------------------------------------------------------------------------------------
stl中常用iterator和const_iterator这样访问container中的element:
#include <iostream> #include <vector> using namespace std; int main(){ vector<int> q; int arr[]={3,4,5,6}; q.push_back(arr[0]); q.push_back(arr[1]); q.push_back(arr[2]); q.push_back(arr[3]); vector<int>::iterator iter=q.begin(); while(iter!=q.end()){ cout<<*iter<<endl; iter++; } cout<<endl; vector<int>::const_iterator iter2=q.begin(); while(iter2!=q.end()){ cout<<*iter2<<endl; iter2++; } //常这样写: vector<int>::const_iterator it; for(it=q.begin();it!=q.end();it++){ cout<<*it<<" "; } return 0; }
相关推荐
19.1.3 常量迭代器和可变迭代器 562 19.1.4 反向迭代器 563 19.1.5 其他几种迭代器 565 19.2 容器 566 19.2.1 连续容器 566 19.2.2 容器适配器栈和队列 570 19.2.3 关联容器集合和映射 572 19.2.4 效率 575...
9.3.6 容器操作可能使迭代器失效 315 9.4 vector对象是如何增长的 317 9.5 额外的string操作 320 9.5.1 构造string的其他方法 321 9.5.2 改变string的其他方法 322 9.5.3 string搜索操作 325 9.5.4 ...
9.3.6 容器操作可能使迭代器失效 315 9.4 vector对象是如何增长的 317 9.5 额外的string操作 320 9.5.1 构造string的其他方法 321 9.5.2 改变string的其他方法 322 9.5.3 string搜索操作 325 9.5.4 ...
3.13 STL中的vector:增减元素对迭代器的影响 3.14 STL中排序算法的实现 3.15 C和C++的区别 3.16 内存对齐 3.17 C++转换机制(static_cast、dynamic_cast、reinpreter_cast、 const_cast) 3.18 深拷贝和浅拷贝 3.18...
3.6.4 常量指针 3.6.5 void指针和空指针 3.6.6 结构指针 3.6.7 字符指针 3.6.8 指针和数组 3.7 引用 3.8 函数 3.8.1 函数声明和定义 3.8.2 函数重载 3.8.3 参数传递 3.8.4 返回值 ...
9.2 迭代器和迭代器范围 268 9.2.1 迭代器范围 270 9.2.2 使迭代器失效的容器操作 271 9.3 顺序容器的操作 272 9.3.1 容器定义的类型别名 272 9.3.2 begin和end成员 273 9.3.3 在顺序容器中添加元素 273 9.3.4 关系...
MCU_51_指针_数组与字符串指针.mp4 MCU_51_指针与函数参数.mp4 MCU_51_指针变量和指针运算符.mp4 MCU_51_指针数组.mp4 MCU_51_结构.mp4 MCU_51_结构数组_结构与函数.mp4 MCU_51_联合.mp4 PonC_指针和数组-2....
双向列表迭代器的不透明表示类型。 以lst_iter_为前缀的lst_iter_接受这种类型的值。 lst_elem_t 存储在列表中的项目类型。 该库的功能已经在假设此类型是整数的情况下进行了测试。 TODO : 用通用类型组织库的...
对这个自由函数的要求是,它必须接受该类的一个指针或常量指针或 引用或常量引用作为函数的第一个参数.该函数的剩下的参数将在Lua侧可见,而对象指针将被赋值给第一个 参数.如果我们有如下的C++代码: struct A { int ...
20.1.2 迭代器简介 20.1.3 算法简介 20.2 顺序容器 20.2.1 vector顺序容器 20.2.2 1ist顺序容器 20.2.3 deque顺序容器 20.3 关联容器 20.3.1 multiset关联容器 20. 3.2 set关联容器 20.3.3 mdtimap...
20.1.2 迭代器简介 20.1.3 算法简介 20.2 顺序容器 20.2.1 vector顺序容器 20.2.2 1ist顺序容器 20.2.3 deque顺序容器 20.3 关联容器 20.3.1 multiset关联容器 20. 3.2 set关联容器 20.3.3 mdtimap...
16.5.8 在单个类中创建多个迭代器 469 16.5.9 yield语句的要求 470 16.6 小结 470 第17章 反射、特性和动态编程 471 17.1 反射 471 17.1.1 使用System.Type访问元数据 472 17.1.2 成员调用...
12_数组中括号与指针关系和数组名常量指针分析 13_字符串一级指针内存模型_传智扫地僧 14_字符串copy函数技术推演 15_字符串copy函数强化训练_判断null_引入辅助指针变量_传智扫地僧 16_项目开发模型强化_strstr_...
第35章 STL迭代器、分配器和函数对象 35.1 迭代器 35.2 函数对象 35.3 分配器 第36章 字符串类 36.1 basic_string类 36.2 char_traits类 第37章 数字类 37.1 complex类 37.2 valarray类 37.3 数字算法 第38章 ...
3.4 迭代器简介 3.5 标准库bitset类型 3.5.1 bitset对象的定义和初始化 3.5.2 bitset对象上的操作 第4章 数组和指针 4.1 数组 4.1.1 数组的定义和初始化 4.1.2 数组操作 4.2 指针的引入 4.2.1 什么是指针 ...
第3章迭代器简介 26.二进制和十六进制 27.第3章标准库bitset类型 28.标准库bitset应用实例 29.第4章数组 30.第4章指针的引入 31.第4章使用指针操作数组元素 32.第4章指针和const限定符 33.第4章C...
13.1.l 用迭代器遍历容器 13.1.2 仔细研究迭代器 13.1.3 流迭代器 13.1.4 为什么使用end() 13.1.5 复制列表 13.1.6 列表中的列表 13.1.7 STL字符串指针的麻烦 13.1.8 释放 STL指针 13.2 一个...
7.5.2.2 第二阶段 144 7.5.2.3 输入类型 144 7.5.2.4 输出类型 145 7.5.2.5 依赖 145 7.5.2.6 输出类型推断 145 7.5.2.7 参数类型显式推断 145 7.5.2.8 精确推断 145 7.5.2.9 下限推断 145 7.5.2.10 上限推断 146 ...
它由容器算法迭代器组成。 STL有以下的一些优点: 可以方便容易地实现搜索数据或对数据排序等一系列的算法; 调试程序时更加安全和方便; 即使是人们用STL在UNIX平台下写的代码你也可以很容易地理解(因为STL是跨...