一、指向const对象的指针---对象不能修改

方式1

int value1 = 3;
const int *p1 = &value1;
*p1 = 5; //错误,不能修改const指向对象的值

cout << "value1 = " << value1 << ",*p1 = " << *p1 << endl;

方式2

const int value1 = 3;
int *p1 = &value1; //错误,const int*' to 'int*

cout << "value1 = " << value1 << ",*p1 = " << *p1 << endl;

二、 const指针---指针本身值不能修改

方式1(不可以修改指针本身)

int value = 3;
int value2 = 4;
int *const p = &value;
p = &value2; //错误,不能修改指针指向的地址,assignment of read-only variable 'p'
cout << "value = " << value << ",*p = " << *p << endl;

方式2(可以修改指针指向的值)

int value = 3;
int value2 = 4;
int *const p = &value;
*p = value2; //正确
cout << "value = " << value << ",*p = " << *p << endl;  //value = 4,*p = 4

三、指向const对象的const指针---既不能修改指针的值,也不能修改指针所指向对象的值

const int value = 3;(或者 int value = 3)
const int *const p = &value;
int value2 = 4;
p = &value2; //不能修改指针本身,error: assignment of read-only variable 'p'
*p = 5;   //不能修改指针指向的值, error: assignment of read-only location '*(const int*)p'
cout << "value = " << value << ",*p = " << *p << endl;

四、指针和typedef

方式1(错误原因?)

typedef string *pstring;
const pstring p; //错误,没有初始化,error: uninitialized const 'p'

方式2(正确)

typedef string *pstring;
const string p; //正确,string类型定义可以不初始化

在C++中,const限定符既可以放在类型前面也可以放在类型后,即下面两条语句的作用是完全相同的

const string s == string const s;

/*
*示例,下面的几条定义的作用是一样的!
*/
string s;
typedef string *pstring;
const pstring p1 = &s;
pstring const p2 = &s;
const string *p3 = &s;
string const *p4 = &s;

参考:http://blog.csdn.net/zjf280441589/article/details/23043889

const在指针中的用法的更多相关文章

  1. C++中const在函数中的用法

    1.const放在函数前面 如果我们的函数的返回值是以 指针形式 返回的,如果在函数前面加上const修饰,则表示指针指向的内容是不能被改变的,并且接收返回值的 指针变量必须是const修饰的,例如: ...

  2. C++中使用const修饰指针

    在本文中呢,主要讲解四个方面,即:常量数据的与否和常量指针的与否中const如何对指针进行修饰: 1.指向非常量数据的常量指针 对于一个指向非常量数据的常量指针,我们应该清楚的知道,在这我们注重的是指 ...

  3. 结合示例说明C++中const和指针结合时怎么理解

    在之前随笔<C++中const使用要点(一)>中简单叙述了const int*.int* const和const int* const的区别,记住三句话就能在实际运用时用对,但是看书时发现 ...

  4. 编程基础-c语言中指针、sizeof用法总结

    1.指针 学习 C 语言的指针既简单又有趣.通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的.所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的. ...

  5. C++中的const和指针组合

    在C++里,const修饰指针有以下三种情况 (1)指针常量:即指向常量的指针 const  int *p或者int const *p const在*前,,可以这样理解它的功能,因为const在*前, ...

  6. c++中的const与指针

    const修饰符 使用const修饰变量时,该变量的值不可修改,因此需要初始化. 例如 const int s = 0: 此时s为值不可变的变量. 那么基于此,当const修饰指针时的情况有三种: ( ...

  7. const 指针与指向const的指针

    最近在复习C++,指针这块真的是重难点,很久了也没有去理会,今晚好好总结一下const指针,好久没有写过博客了,记录一下~ const指针的定义: const指针是指针变量的值一经初始化,就不可以改变 ...

  8. const 相关知识 const和指针、const和引用

    以前老是对const概念不清不楚,今天算是好好做个笔记总结一下.以下内容包括1)常量指针(指针本身是常量),2)指针常量(指针指向的是常量对象),3)常量引用,4)const成员函数. 常量指针,指针 ...

  9. const和typedef的常见用法详解

    一.说说const 一般而言,const主要是用来防止定义的对象再次被修改,定义对象变量时要初始化变量. 常见用法如下: 1.用于定义常量变量,这样这个变量在后面就不可以再被修改 const int ...

随机推荐

  1. Grunt快速使用笔记

    本篇文章由:http://xinpure.com/grunt-quick-note/ http://www.gruntjs.net/getting-started Grunt中文网 安装 Grunt ...

  2. sphinx设置多属性过滤的方法(setFilter)

    需求描述 mysql中,每一个文档都有多个标签,查询时可以筛选一个标签也可以筛选同时拥有多个标签的文档. 数据示例 文档 标签   1    1,2,3,4,5   2    2,3,4,5,6   ...

  3. 解决Win10系统下 C# DateTime 出现星期几的问题 解决ASP.NET MVC 接受Request Playload参数问题

    解决Win10系统下 C# DateTime 出现星期几的问题 昨天晚上写代码的时候偶然发现 DateTime 里出现了星期几,当时一阵凌乱,去网上百度没有详细解决办法,很多人说可以用用 ToStri ...

  4. mongodb - mongostat说明

    # ./mongostat insert query update delete getmore command % dirty % used flushes vsize res qr|qw ar|a ...

  5. STL容器分析--set

    STL 对这个序列可以进行查找,插入删除序列中的任意一个元素,而完成这些操作的时间同这个序列中元素个数的对数成比例关系,并且当游标指向一个已删除的元素时,删除操作无效.而一个经过更正的和更加实际的定义 ...

  6. 0xffff0000颜色表示

    0xffff0000表红色,意思是: A:ff=255 R:ff=255 G:00=0 B:00=0 可如下将(255,0,0,255)转成0xffff0000并输出: inline DWORD RG ...

  7. Android Studio公布到Jcenter

    1.前言 拥抱开源.热爱开源,将我们觉得不错的代码开源到gihtub.将我们的库公布到jcenter\mevan等. 2.准备工作 2.1 准备 申请仓库账号 注意model为android libr ...

  8. 点滴积累【JS】---JS小功能(JS实现排序)

    效果: 思路: 首先,获得用到的ID,在把得到的<li>数组添加到array数组里面,然后在进行array排序,排序完后再将array中的数据用appendChild添加到ul里面: 代码 ...

  9. JNI调用实例

    1. 环境 Windows7-64Bit VS2010-32Bit JDK1.8-64Bit 2. 步骤 2.1 创建NativePrint类 public class NativePrint { p ...

  10. layui的时间线当点击按钮的时候自动添加一条新时间线

    $('.littleTaskBtn li').on('click',function(){ var content=$('.content').html(); $('.layui-timeline-i ...