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的区别就是一例。相信不少同学都会对这其中的差异表示不解,我尝...

详解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
  • 3667

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

在学习c语言的过程中,可能我们很少见到

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

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

C/C++_ const int * 与 int *const的区别

原文 http://www.cppblog.com/izualzhy/archive/2011/10/19/158714.html 先看一段代码: 1: char greeting[] = “H...

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

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

const的常见用法

const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量   下面我就介绍一下几种常见的用法 1.用于定义常量变量,这样这个变量在后面就不可以再被修改  const int...
  • bizhu12
  • bizhu12
  • 2011年08月09日 15:45
  • 25982

const int *a与int *const a,const int *const a的区别

关键问题点:const 属于修饰符 ,关键是看const 修饰的位置在那里 1、const int *a 这里const 修饰的是int,而int定义的是一个整值 因此*a 所指向的对象 值...

char (*p)[]与char *p[]

char p[] = "hello,world"; 是对字符串"hello,world"做了拷贝,所以可以对拷贝字符串做任意修改char *p = "hello,world"; 字符串常量将自己在静态...

关于C语言中return的总结

return、break和continue这三个关键字有一个共同点,那就是读能让后面的语句不执行,不同的地方就是挑的距离不一样。return很强大,如果一个函数中有一个return,并且执行了,那么这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:int *const 与const int *问题
举报原因:
原因补充:

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