const int *p, int *const p的区别
来源:互联网 发布:淘宝买家贷款5万怎么贷 编辑:程序博客网 时间:2024/05/01 15:39
(1) const int i
使用const 修饰的i我们称之为符号常量,即i不能在其他地方重新赋值。const int i和int const i是等价的。
(2) const int *p
从右向左看,先结合* 再结合const,定义一个指针指向一个常量,不能通过指针来修改这个指针指向的值。
看例子:
int i1=30;
int i2=40;
const int *p=&i1;
p=&i2;
i2=80;
printf("%d",*p);
分析:p的值是可以被修改的,即它可以重新指向另一个地址。但是不能通过*p来修改i2的值。
首先,const修饰的是整个*p(注意,是*p而不是p),所以*p是常量,是不能被赋值的。虽然p所指的i2是变量而不是常量;
其次,p前并没有用const修饰,所以p是指针变量。能被赋值重新指向另一个内存地址。
先看const再看* ,p是一个常量类型的指针,不能修改这个指针的指向,但是这个指针所指向的地址上存储的值可以修改。
int i1=30;
int i2=40;
int * const p=&i1;
//p=&i2;
i1=80;
printf("%d",*p);
分析:
此时p的值不能被赋值修改了,只能永远指向初始化时候的内存地址。相反,可用*p修改i1的值了。
所以:综上所述,
指针p因为有了const的修饰,所以为指针常量,即,指针p不能修改了。
整个*p前面没有const修饰,则*p为变量而不是常量,所以,可改变*p的值。
如果const修饰在*p前则不能改的是*p,而不是指p;
如果const是直接写在p前,则p不能改。
- const int *p,int *const p区别
- const int *p,int *const p区别
- const int *p,int *const p区别
- const指针,const int * p, int *const p,int const * p的区别
- const int *p、int *const p、const int* const p的区别
- int *p,cons int *p,int const *p,int * const p,const int * const p,int const * const p的区别
- 题目二:const int *p,const * int p,int const *p的区别还有int const *const p
- (const int *p)、(int const *p)、(int *const p)、(const int *const p)的区别
- const int *p与int *const p的区别
- const int *p与int *const p的区别
- const int *p 和 int* const p 的区别详解
- const int *p与int * const p的区别
- const int* p与int *const p的区别
- const int *p与int *const p的区别
- const int *p与int *const p的区别
- const int *p, int *const p的区别
- const int *p与int *const p的区别
- const int *p与int *const p的区别
- logstash-input-kafka
- Leetcode -- N-Queens
- vs2013 boost库编译小结
- nginx之反向代理
- 消失的模拟器
- const int *p, int *const p的区别
- Breadth-First-Search(伪代码)
- C++拷贝构造函数语意学 copy constructor(The Semantics of Constructors)
- 跟着猫哥学Golang[4] - switch
- 冒泡排序及其推理方法
- 控制孩子玩手机的时间(控制儿童使用手机时间)
- Dorado创建HelloWorld项目
- Codeforces Round #327
- JAVA的String 类【转】