int *const 与const int *问题

原创 2015年07月08日 12:09:35

自己一直就不太清楚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可以变化。

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

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

关于const int*, int const*以及int *const的区别

使用C++也有些年了,这个语言确实有诸多繁琐和变态的地方,比如这次要说明的const int*、int const*以及int *const的区别就是一例。相信不少同学都会对这其中的差异表示不解,我尝...
  • skywalker_leo
  • skywalker_leo
  • 2015年09月21日 17:01
  • 7855

详解const int *p,int*const p,int const *p

详解const int *p,int*const p,int const *p1 从const int n 说起     const int n=20,有了const修饰的n 我们不称它为变量,而称符...
  • yjh0628
  • yjh0628
  • 2010年08月22日 14:46
  • 3930

C++中const int *、int *const 以及int const*区别

关于指针,我们首先要弄清楚四点:指针类型、指针指向类型、指针的值、指针指向的值。如果这一点不是很清楚,请参考这里  网址:http://blog.csdn.net/hsd2012/article/de...
  • hsd2012
  • hsd2012
  • 2016年03月23日 15:55
  • 2426

const T、const T*、T *const、const T&、const T*& 的区别

这里的T指的是一种数据类型,可以是int、long、doule等基本数据类型,也可以是自己类型的类型class。单独的一个const你肯定知道指的是一个常量,但const与其他类型联合起来的众多变化,...
  • luoweifu
  • luoweifu
  • 2015年05月09日 12:35
  • 14456

const int & 和 int 的区别

最近看函数的返回值时总是出现这两种函数的返回值。 const int& get() {return x;} int get() {return x;} 下面就关于这两种函数...
  • yangshuolll
  • yangshuolll
  • 2015年07月07日 10:59
  • 2754

const int * pt和int * const pt的区别

初学C++感觉,虽然以前也用过C,但是用的不是很熟。今天为了搞懂const int * pt和int * const pt的区别还是花了一点时间的。先看const int * pt:int num ...
  • happyxieqiang
  • happyxieqiang
  • 2015年08月18日 21:15
  • 889

const int *p, int *const p的区别

(1) const int i 使用const 修饰的i我们称之为符号常量,即i不能在其他地方重新赋值。const int i和int const i是等价的。 (2) const int *p ...
  • sunhero2010
  • sunhero2010
  • 2015年10月26日 20:26
  • 1841

const int *p与int *const p的区别

本文只是一篇学习笔记,是看了《彻底搞定C指针》中的相关篇幅后的一点总结,仅此而已! 一、先搞清const int *p与int const *p的区别 它们的区别就是:没有区别!! 无论谁在前面...
  • suer0101
  • suer0101
  • 2012年09月29日 15:13
  • 12123

const的使用方法----腾讯2016研发工程师笔试题(一)

请找出下面程序中有哪些错误: 1 2 3 4 5 6 7 8 9 10 11 12 13 int main() {    int i=10;  ...
  • chengonghao
  • chengonghao
  • 2016年07月11日 19:54
  • 1537

C++ 常引用 const int &a 的作用和区别

首先回顾一下const常类型的作用:使形参在子函数中调用时成为一个常量来使用,既无法成为左值,无法修改形参的值。 引用&的作用:例如a=&b,那么表示a是b的别名,此时a和b的地址相同。在子函数中调...
  • u013828206
  • u013828206
  • 2014年03月26日 20:55
  • 2759
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:int *const 与const int *问题
举报原因:
原因补充:

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