【转】const int *p和int * const p的区别(常量指针与指向常量的指针)

【转】作者:xwdreamer   出处:http://www.cnblogs.com/xwdreamer

 

 

对于指针和常量,有以下三种形式都是正确的:

const char * myPtr = &char_A;//指向常量的指针
char * const myPtr = &char_A;//常量的指针
const char * const myPtr = &char_A;//指向常量的常量指针

下面依次对这三种类型进行介绍。

因为*操作符是左操作符,左操作符的优先级是从右到左,对于

1.常量指针(Constant Pointers)

int * const p

先看const再看* ,是p是一个常量类型的指针,不能修改这个指针的指向,但是这个指针所指向的地址上存储的值可以修改。

实例1:

#include<iostream>
#include<stdlib.h>
using namespace std;void main()
{int i1=30;int i2=40;int * const pi=&i1;//这里的pi指针式常量。//pi=&i2;     //注意这里,pi不能再这样重新赋值了,即不能再指向另一个新地址。所以我已经注释了它。printf("%d\n", *pi ) ;   //输出是30i1=80;     //5.想想看:这里能用*pi=80;来代替吗?可以,这里可以通过*pi修改i1的值。printf("%d\n", *pi ) ;   //输出是80system("pause");
}

 

实例2:

char char_A = 'A';
char char_B = 'B';char * const myPtr = &char_A;
myPtr = &char_B;    // error - can't change address of myPtr

 

2.指向常量的指针(Pointers to Constants)

const int *p

先看*再看const,定义一个指针指向一个常量,不能通过指针来修改这个指针指向的值。

实例3:

#include<iostream>
#include<stdlib.h>
using namespace std;void main()
{int i1=30;int i2=40;const int * pi=&i1;printf("%d\n", *pi ) ;   //输出是30pi=&i2;     //注意这里,pi可以在任意时候重新赋值一个新内存地址i2=80;     //想想看:这里能用*pi=80;来代替吗?当然不能printf("%d\n", *pi ) ;   //输出是80
system("pause");
}

实例4:

char char_A = 'A';
const char * myPtr = &char_A;
*myPtr = 'J';    // error - can't change value of *myPtr

 所以指针p所指向的整型数是一个常量,其值不能被修改。

 3.指向常量的常量指针

对于“指向常量的常量指针”,就必须同时满足上述1和2中的内容,既不可以修改指针的值,也不可以修改指针指向的值。

4.引入字符数组和字符指针

字符数组和字符指针的定义如下:

char a[] = "I Love You!"; //定义了一个字符数组
char *p = "I Love You!";  //定义了一个字符指针

可以将a理解为常量指针,而p为指向常量的指针,代码实例如下:

#include<iostream>
#include<stdlib.h>
using namespace std;void main()
{char a[] = "I Love You!"; //定义了一个字符数组,数组名a是一个常量指针,指向的位置不变,都是数组第一个元素的位置char *p = "I Love You!";  //定义了一个字符指针,指针p指向一个字符串常量,这个字符串常量不能修改//*(p+1)='a';//错误,不可以修改指针指向的值,所以这里注释掉。a[1]='a';//常量指针,不能修改指针的值,但是可以修改指针所指向的值。//a=p;//错误,a是常量指针,不可修改其值。cout<<a<<endl;cout<<p<<endl;cout<<a[1]<<endl;cout<<*(p+2)<<endl;system("pause");
}

 

输出值为:

IaLove You!
I Love You!
a
L

 

转载于:https://www.cnblogs.com/liez/p/5484860.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle能用什么软件访问,使用工具访问ORACLE数据库(一)

常用的数据库工具 sqlplus保证你的实例是启动的&#xff1a;ps -elf |grep ora_ |grep -v grep&#xff0c;可以查看出已经启动的oracle进程发现很多ora_smon_orcl 名字&#xff1a;ora_进程名字_实例名字如何启动oracle实例export ORACLE_SIDorcl 指定登陆实例的名字叫o…

解决NTKO Office中文文件名保存到服务器时出现乱码的问题

再使用NTKO office控件时&#xff0c;在ntko往服务器提交文件时&#xff0c;中文文件名会出现乱码的问题&#xff01; 其实解决这个问题可以换一种思路&#xff0c;在ntko往服务器提交文件时英文肯定是不会出现乱码的问题的&#xff01; 那么想办法把中文文件名转换成英文放到隐…

python手势识别隐马尔可夫模型_使用隐马尔可夫模型的运动笔迹手势识别.doc

您所在位置&#xff1a;网站首页 > 海量文档&nbsp>&nbsp高等教育&nbsp>&nbsp科普读物使用隐马尔可夫模型的运动笔迹手势识别.doc10页本文档一共被下载&#xff1a;次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性…

oracle连接数增加无法释放,Oracle连接数过多释放机制

在开发时&#xff0c;调试程序需要不断的连接数据库&#xff0c;这时到时Oracle服务器连接数过多会当掉&#xff0c;把连接数过多的客户机网线拔出后&#xff0c;在远程Oracle上依然还会保留此用户的连接数&#xff0c;久久不能释放&#xff0c;上网查了下可以以下面方法解决。…

腾讯视频过滤广告简略办法

转载于:https://www.cnblogs.com/rgqancy/articles/5485409.html

can总线一帧多少字节多少位_CAN总线过载帧及数据帧详解

CAN&#xff1a;Controller Area Network&#xff0c;控制器局域网是一种能有效支持分布式控制和实时控制的串行通讯网络。本文首先介绍了CAN总线系统结构及数据传输&#xff0c;其次详细的阐述了CAN总线过载帧及数据帧&#xff0c;具体的跟随小编一起来了解一下吧。CAN总线系统…

oracle回滚段空间满了,Oracle回滚段表空间文件丢损怎样处理?

在很多情况下&#xff0c;数据库是启着的比关闭着解决问题更容易些。 这种情况的两种可能的解决方法 : A) 使丢失的那个数据文件 offline, 并从备份中恢复它&#xff0c;这种情况适用于数据库是处于归档方式的。 B) 另一个方法是 offline 掉所有的那个文件所属表空间的回滚段&a…

vue设置img大小的属性_Vue.js自定义标签属性并获取属性,及绑定img的src属性的坑...

一、定义属性&#xff1a;一般定义属性都是为了动态的去获取属性的值&#xff0c;或者动态的设置属性的值&#xff0c;如果想仅仅是设置一个普通的属性&#xff0c;直接在便签上设置属性即可&#xff0c;就像使用html的title、name等属性一样&#xff0c;如H1标签。下面具体说动…

vue 同级页面调用方法_【Vue】一个vue页面调用另一个vue页面中的方法

想仿着 vue-material 的 Demo & Document 页面的效果写一个小例子.遇到问题的地方是:如上图红色圈出的地方&#xff0c;点击 button 按钮时&#xff0c;无法执行 toggle() 方法&#xff0c;实现显示 Sidenav 的效果。代码如下:App.vue...// 里面主要内容就是一个路由视图..…

oracle dbms_crypto,DBMS_CRYPTO包对Oracle加密

SQL> DECLARE2 input_string VARCHAR2(30) : 需要加密的内容;3 raw_input RAW(128) : UTL_RAW.CAST_TO_RAW(input_string);4 --将需要加密的内容转换成RAW格式5 raw_key RAW(256);6 encrypted_raw RAW(2048);7 encrypted_string V…

大疆手持云台和华为mate20_告别手残,华为Mate30与大疆手持云台拍照真香

智能手机越来越专注于拍照效果&#xff0c;就如笔者现在使用的华为Mate30不仅仅商务范十足&#xff0c;而且拍照技术也是无可挑剔&#xff0c;而想拍的更好有时候外设必不可少&#xff0c;笔者本次搭配了大疆手机云台3的使用&#xff0c;给大家带来一次“华为Mate30与大疆手机云…

MySQL replace into 的坑以及insert相关操作

下面我们主要说一下在插入时候的几种情况&#xff1a; 1&#xff1a;insert ignore 2&#xff1a;replace into 3&#xff1a;ON DUPLICATE KEY UPDATE 关于insert ignore&#xff1a; 关于replace into: 关于ON DUPLICATE KEY UPDATE &#xff1a; MySQL 对 SQL 有很多扩展&a…

php实现tcp连接的原理,PHP实现TCP实例

NotifyService.phpclass NotifyService extends Model{private static $client;private static $redis;/*** 初始化*/protected static function initial(){$url tcp:// . config(ctrl_service.host) . : . config(ctrl_service.port);self::$client stream_socket_client($u…

docker ps3netsrv_QNAP 威联通 NAS TS-212P应用系列 篇一:实践基于QNAP平台搭建PS3NETSRV服务...

QNAP 威联通 NAS TS-212P应用系列 篇一&#xff1a;实践基于QNAP平台搭建PS3NETSRV服务2015-01-01 13:44:0047点赞307收藏70评论小编注&#xff1a;此篇文章来自即可瓜分10万金币&#xff0c;周边好礼达标就有&#xff0c;邀新任务奖励无上限&#xff0c;点击查看活动详情追加修…

一周内自动登录php,利用php实现一周之内自动登录存储机制(cookie、session、localStorage)...

cookie、session、localStorage这三个应该是最让程序员头疼的了,我利用简单的登录界面的username和password来说明一下吧.1.cookie用来存储用户相关数据&#xff0c;存储的位置在用户本地&#xff1a;首先是登录界面定义:Sign me in上面的代码大家都懂吧,就是一个表单.然后就是…

HTTP知识普及系列:HTTP返回状态码

状态码1XX 信息性状态码 接受的请求正在处理  2XX 成功状态码 请求正常处理完毕  3XX 重定向状态码 需要进行附加操作以完成请求  4XX 客户端错误状态码 服务器无法处理请求  5XX 服务器端错误状态码 服务器处理请求出错2XX 相应结果表明请求被正常处理了200 OK 表示从…

来电语音播报软件下载apk_消息语音播报app下载-消息语音播报安卓版 v1.0.1 - 安下载...

消息语音播报app是一款语音播报工具&#xff0c;它可以将微信、QQ、短信等消息进行语音播报&#xff0c;让你能够第一时间知晓消息内容&#xff0c;无需进入界面也能知晓发来的消息&#xff1b;它支持多个场就下使用&#xff0c;开启语音播报后无需你手动打开手机查看消息&…

linux创建特殊文件rules,RHEL5 Oracle Linux 5上生成正确的udev rule 规则文件

RHEL5 Oracle Linux 5上生成正确的udev rule 规则文件1.确认在所有RAC节点上已经安装了必要的UDEV包[rootrh2 ~]# rpm -qa|grep udevudev-095-14.21.el52.通过scsi_id获取设备的块设备的唯一标识名&#xff0c;假设系统上已有LUN sdc-sdifor i in c d e f g h i;doecho "s…

HTTP知识普及系列:HTTP首部

HTTP协议的请求和响应报文中必定包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。在请求中&#xff0c;HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。在响应中&#xff0c;HTTP报文由HTTP版本、状态码&#xff08;数字和原因短语&…

maya材质sheen_maya怎样做耐磨金属质感?

maya做出金属质感的方法&#xff1a;基本属里就调颜色跟漫反&#xff0c;colour任意Diffuse调低&#xff0c;滑杆三分之一到四分之一左右Specular Shading高光属Ecceicity、Specular Roll Off以及Specular Color控制高光点强度。面积颜色属一般金属的话第一个打到左边四分之一到…