自己一直就不太清楚int *const与const int*之间的差别,总是弄混,今天势必拿一个程序验证一下。

一个指针是有两个属性的,一个是它指向的地方,一个是它指向地方上的内容。两者的差别也在此。const究竟修饰的是什么。

代码:

#include <iostream>
using namespace std; int main()
{
int p=1;
int q=2;
int k=3; const int *m=&p;
int const *n=&q;
int *const i=&k; //(*m)++;error C3892: “m”: 不能给常量赋值
//(*n)++;error C3892: “n”: 不能给常量赋值
(*i)++; cout<<"i="<<*i<<endl; m=&q;
n=&p;
//i=&p;error C3892: “i”: 不能给常量赋值 cout<<"m="<<*m<<endl;
cout<<"n="<<*n<<endl; system("pause");
return 0;
}

代码运行结果:





根据运行的结果,可以得出结论就是const int *与int const*是一样的,指针指向的内容是一个常量,不能改变,指针指向的地点可以改变。而int *const与以上两者相反,指向的内容可以改变,指向的地点不能改变。

我的理解就是看const修饰什么吧,前两者const int *m与int const *n,m和n是指针常量,其常量const是修饰*m 、*n的,说明*m *n不能改变。即它首先是一个指针,可以指向很多地方,但一旦指向一个地方之后,*m与*n是常量,其内容即不能改变。

而int *const i是指针常量,即常量const修饰i,而i是一个指针,这就好理解了,i指的地方不能改变,但i指地方的内容即*i可以变化。

以上只是自己的浅薄理解,如果有什么不对的地方,还望多多指正。

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

int *const 与const int *问题的更多相关文章

  1. const int * p 和 int const * p 和 int * const p 的区别

    首先注意,const int * p 和int const *p 是一样的,并且不管是不是*p,即使const int i和int const i也是一样的,所以我们接下来只讨论int const * ...

  2. c语言检测文件是否存在int __cdecl access(const char *, int);

    最近写代码,遇到很多地方需要判断文件是否存在的.网上的方法也是千奇百怪,“百家争鸣”. fopen方式打开的比较多见,也有其他各种方式判断文件是否存在的,由于其他方法与本文无关,所以不打算提及. 笔者 ...

  3. int * const 与 const int * 的区别

    type * const 与 const type * 是在C/C++编程中特别容易混淆的两个知识点,现在就以 int * const 和 const int * 为例来简略介绍一下这两者之间的区别. ...

  4. 【转】int const A::func()和int A::func() const

    int const A::func() { return 0; }int A::func() const { return 0; } 上面的代码是合法的,其中A::func成员函数[只能在成员函数后面 ...

  5. const vector<int> 和 vector<const int>问题讨论

    1.const vector <int> vec(10) —— 与const int a[10]是一回事,意思是vec只有10个元素,不能增加了,里面的元素也是不能变化的 vector&l ...

  6. VS2013 error C2556: “const int &Array<int>::operator [](int)”: 重载函数与“int &Array<int>::operator [](int)”只是在返回类型上不同

    1,VS2013 错误 1 error C2556: “const int &Array<int>::operator [](int)”: 重载函数与“int &Array ...

  7. const&nbsp;int&nbsp;*pi与int&amp;nbs…

    此质料是摘要:<<彻底搞定C 指针 >>,自己感觉比较有价值,现与大家分享. 1. 从const int i 说起 你知道我们声明一个变量时象这样int i :这个i是可能在它 ...

  8. int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的差别

     加有constkeyword的几种情况的辨析 const修饰的代码 含义(特点) 等价性 int *p = &num; 1.       能够读自己 2.       能够通过*p改自己 ...

  9. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

随机推荐

  1. httpclient访问接口步骤

    1. 创建HttpClient对象. 2. 构造Http 请求对象. 3. 执行HttpClient对象的execute方法,将Http请求对象作为该方法的参数. 4. 读取execute方法返回的H ...

  2. DICOM的Worklist服务

    看 DICOM 标准有一段时间了,前面几篇也介绍了一下 DIMSE-C 消息服务,具体参看Dicom 学习笔记-Dicom 消息服务(DIMSE-C/DIMSE-N),本文就介绍一下 DICOM 标准 ...

  3. Python数据分析在互联网寒冬下,数据分析师还吃香吗?

    伴随着移动互联网的飞速发展,越来越多用户被互联网连接在一起,用户所积累下来的数据越来越多,市场对数据方面人才的需求也越来越大,由此也带火了如数据分析.数据挖掘.算法等职业,而作为其中入门门槛相对较低. ...

  4. 第1节 IMPALA:3、impala软件的下载和linux磁盘的挂载

    1. impala安装软件下载: http://archive.cloudera.com/cdh5/repo-as-tarball/5.14.0/ 2. linux磁盘的挂载: [root@node0 ...

  5. vDom和domDiff

    虚拟dom和domDiff 1. 构建虚拟DOM var tree = el('div', {'id': 'container'}, [ el('h1', {style: 'color: blue'} ...

  6. 富文本API

    这个笔记来自网络资料的总结 简书大佬三省吾身_9862 tuobaye个人博客 富文本有相关3个API和一个新属性 var selection = window.getSelection(); var ...

  7. 利用python模拟鼠标点击自动完成工作,提升你的工作效率!

    没有什么能比学以致用让学习变得更有动力的了. 不知道大家在工作中有没有一些工作需要重复的点击鼠标,因为会影响到财务统计报表的关系,我们每个月底月初都要修改ERP中的单据日期,单据多的时候光修改就能让你 ...

  8. php中date('Y/m/d',time())显示不对

    一. 时间不对是因为没设置时区 在xampp/php/php.ini中ctrl + f 查找date.timezone 该行默认注释,去掉 ; 修改为 date.timezone = PRC 二 上述 ...

  9. Kafka--初识Kafka

    前言 数据为企业的发展提供动力.我们从数据中获取信息,对他们进行分析处理,然后生成更多的数据.每个应用程序都会产生数据,包括日志消息,度量指标,用户活动记录,响应消息等.数据的点点滴滴都在暗示一些重要 ...

  10. JWT跨域身份验证解决方案

    JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.本文介绍JWT的原理和用法. 1. 当前跨域身份验证的问题 Internet服务无法与用户身份验证分开.一般过程如下.1.用户 ...