c++学习笔记-指针和const限定符
2012-09-13 10:36
369 查看
1. 指向const对象的非const指针(常用于函数的形参)
指针指向一个const对象,不允许通过指针修改其指向的const对象的值。但是指针本身的值是可以修改的(可以指向另一个对象)。
void testConstPointer1() { const string s1 = "alexzhou"; const string *ps1 = &s1; //*ps1 = "zjh";编译错误 cout << *ps1 << endl; const string s2 = "zjh"; ps1 = &s2; cout << *ps1 << endl; }
把const对象的地址赋值给一个非const对象的指针是错误的,如:
const string s1 = “alexzhou”;
string *ps1 = &s1;//error
同理不能使用void*指针保存const对象的地址,需要使用const void*。
但允许把非const对象赋值给const对象的指针。
const string *ps1;
string s3 = “zjh”;
ps1 = &s3;//ok
由于没有办法分辨ps1所指的对象是否为const,所以系统会把它所指的对象视为const的。因此不能通过ps1修改它所指的非const对象的值。
2. 指向非const对象的const指针
指针本身的值不能修改(不能指向另外一个对象),但是指针所指的对象的值是可以修改的。void testConstPointer2() { string s1 = "alexzhou"; string s2 = "zjh"; string s3 = "alexzhou"; string *const ps1 = &s1; *ps1 = "zjh";//ok ps1 = &s2;//error ps1 = &s3;//error }
3. 指向const对象的const指针
既不能修改指针的指向,也不能修改指针所指对象的值。转载请注明来自:Alex
Zhou,本文链接:http://codingnow.cn/c-c/486.html
相关文章推荐
- c++学习笔记--指针和const限定符
- 【C++】学习笔记草稿版系列9(指向类成员的指针)
- C++学习笔记(五):指针和引用
- C++学习笔记18——指向函数的指针
- C++学习笔记 --- 指针3
- C++ Primer Plus学习笔记之const修饰指针
- C/C++学习笔记18:指针数组和数组指针
- C/C++学习笔记四(指针、数组)
- C++学习笔记-指针和引用的注意事项
- c++pirmer 学习笔记之指针简单应用。
- C++学习笔记:指向函数的指针
- C/C++中关于地址、指针和引用变量的学习笔记(十) : 引用型变量
- C++学习笔记之八 复合类型---指针和自由存储空间
- C++学习笔记二 —— 3.3 指针类型
- c++学习笔记——智能指针
- C++学习笔记2--函数重载 复杂的数据 内存对齐 指针数组 结构与指针 传值传址传引用 联合枚举类型别名
- C++学习笔记(2):指针与const成员函数
- C++学习笔记 指针与引用的区别
- C++学习笔记(四)--指针(2)转
- c++ 模板学习笔记:类模板模拟auto_ptr智能指针(权哥)