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 我们不称它为变量,而称符...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

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

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

const volatile int i = 10

const和volatile放在一起的意义在于: (1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心; (2)另一个程序段则完全有可能修改,因此编...

const volatile同时限定一个类型int a = 10

const volatile int i = 10

const volatile int i = 10

const和volatile放在一起的意义在于: (1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心; (2)另一个程序段则完全有可能修改,因此编...

VC中int,char,char*,const char*,string等类型转换

1. char* to string string s(char *); 注:在不是初始化的地方最好用assign(). !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...

指针和数组,const int *,sizeof,优先级等的一些坑

const 的一些事情const是修饰符,const 指向的常量并不是真正意义的常量const int a, int const *a,int const a,区别,指针数组,数组指针,声明与定义 ...

C++中int、string、const char*、CString之间的相互转换

1.int与string的相互转化使用stringstream即可 stringstream可以吞下不同的类型,根据b的类型,然后吐出不同的类型。//#includeint a=80; string...

数字转换成字符串,int 转换成const char*

Question:将一个int类型转换成字符串。函数原型:const char* itoa(int val) 负数前面要添个负号,正数不用。 写了15min…… const char* i...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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