C/C++ 常量指针,指针常量
来源:互联网 发布:安卓ssr软件 编辑:程序博客网 时间:2024/06/05 04:56
在这里就不再重复C/C++ 常量指针,指针常量的概念了,以下以一个例题作为讲解,
题目是华为的一个选择题:
刚开始我一直以为答案是C,D一样,但是经过分析后,我产生了较大的困惑,希望能得到大神的指导:
个人觉得A,B是等价的同时C,D也是等价的。
A,B中,const位于*的左边,表示指针所指向的对象是常量,不能更改,但是指针是可以更改的,比如可以进行++,--等操作。
相反的若const位于*的右边,表示指针本身不能更改,不能进行++、--、移位等操作,但是指针所指向的对象可以更改。
下面举个例子:(程序中注释的语句都是错误的语句)
A,B中,const位于*的左边,表示指针所指向的对象是常量,不能更改,但是指针是可以更改的,比如可以进行++,--等操作。
相反的若const位于*的右边,表示指针本身不能更改,不能进行++、--、移位等操作,但是指针所指向的对象可以更改。
下面举个例子:(程序中注释的语句都是错误的语句)
- #include <iostream>
- using namespace std;
- int main()
- {
- int a=5;
- int b=10;
- int c=20;
- cout<<&a<<endl;
- cout<<&b<<endl;
- cout<<&c<<endl;
- const int *p1=&b;
- p1++;
- // *p1=20;
- int const *p2=&b;
- p2++;
- // *p2=20;
- const *int p3=&b;
- p3++;
- // *p3=20;
- int * const p4=&b;
- // p4++;
- *p4=100;
- const int * const a1=&b;
- int const * const a2=&b;
- // a1++;
- // a2++;
- // *a1=200;
- // *a2=100;
- cout<<*p1<<" "<<*p2<<" "<<*p3<<" "<<endl;
- return 0;
- }
运行结果:
程序中,变量a,b,c存储在栈中,存储的地址按低地址方向扩展。
const int *p1, int const *p2, const * int p3都指向b的地址,由以上可知p1,p2,p3都是指向常对象的指针,即指针所指向的对象
不能更改,但指针可以更改,如进行++操作。进行++以为操作后,指向变量a的地址,所以进行解引用(*)时输出变量a的值。但是在定义p3的时候出现了一个警告://
: warning C4518: 'int ' : storage-class or type specifier(s) unexpected here; ignored
而对于指针p4,int * const p4=&b,*位于const的左边,const修饰的是指针p4,即指针不能改变,但是可以改变指针所指向的对象。
而对于指针p4,int * const p4=&b,*位于const的左边,const修饰的是指针p4,即指针不能改变,但是可以改变指针所指向的对象。
同理const int * const a1=&b;,int const * const a2=&b;是指向常量的常指针,即指针本身和其指向的对象都不能更改。
0 0
- C++-指针常量和常量指针
- C常量指针 与指针常量区别
- C指针常量和常量指针
- C常量指针 与指针常量区别
- C/C++指针常量和常量指针
- C/C++ 常量指针,指针常量
- C/C++ 常量指针,指针常量
- C/C++ 指针常量和常量指针
- C语言指针常量
- C 指针&&表达式&&常量
- 指针和常量 c
- 【C/C++】常量指针、指针常量以及指向常量的指针常量
- 【C/C++】常量指针、指针常量以及指向常量的指针常量
- C/C++——常量指针和指针常量
- c指针之字符串常量
- 关于C语言指针常量
- C语言:常量指针,指针常量,左移,右移
- C语言中的常量指针和指针常量
- ios客户端学习-日历控件
- C/C++ 内存传递 指针
- 向韦东山学:spi协议+oled裸板程序
- 分享个人maven本地库
- Java实现倒计时代码
- C/C++ 常量指针,指针常量
- Matlab借助匿名函数求隐函数
- Git常用命令
- Java中Properties文件值的获取
- 【杭电】[2006]求奇数的乘积
- 一位Erlang程序员的自白
- linux严格区分大小写导致的问题
- 最新版本mysql for mac的修改root用户密码
- 关于正则表达式的一道面试题