const int * p 和 int const * p 和 int * const p 的区别
首先注意,const int * p 和int const *p 是一样的,并且不管是不是*p,即使const int i和int const i也是一样的,所以我们接下来只讨论int const * p和int * const p的不同
对于这种问题,我们只用将const 的位置固定,然后再看后面的东西,一般规则是后面的东西不能在进行赋值或者修改.例如下面:
#include<stdio.h>
int main(int argc,char *argv[])
{
int i = 10;
int j = 1;
int const *p2 = &i;
int *const p3 = &j;
p2 = &j; //这句没问题,因为const是对 *p2 进行限制的
*p3 = 20; //这句也没问题,同理,const是对p3进行操作的
*p2 = 30; //这句错了,原因就是已经用const修饰了,不能再次改
p3 = &j; //同上,错误
return 0;
}
我们编译下再看下效果:
错误提示:”read-only”,现在有没有对这个问题有理解呢,觉得const怎么样呢?那么我再说一个问题,不知道为什么的问题:
#include<stdio.h>
int main()
{
const int a = 5;
int *p = (int *)&a;
*p = 10;
printf("a:%d\n",a);
}
对,这个结果可是让我吃惊了,为什么呢?欢迎评论交流.
版权声明:本文为博主原创文章,未经博主允许不得转载。
const int * p 和 int const * p 和 int * const p 的区别的更多相关文章
- 数字(int)转字符串和字符串转数字(int)
室友去面试,问了一个字符串转成数字的算法题,室友没搞出来,我心想,这个不是很简单的吗?于是动手在纸上画了画代码.画完后,总感觉哪里不对,最后一个个挖掘,才发现,尼玛,这到处都是坑啊---特此记录一下中 ...
- const(每个对象中的常量), static const(类的编译时常量)
1 每个对象中的常量 --- const数据成员 const限定,意味着“在该对象生命周期内,它是一个常量”. 关键字const 使被限定的量为常量 在该类的每个对象中,编译器都为其const数据成员 ...
- C#整数三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别
1.int适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型); 2.int.Parse(string sParameter)是个构造函数,参数类型只支持string类型; 3. ...
- Int.Parse()、Convert.toInt32()和(int)区别
通过网上的查询从而了解了Int.Parse().Convert.toInt32()和(int)区别. 一.定义上的差别 int类型表示一种整型,.NET Framework 类型为 System.In ...
- int([x[, base]]) : 将一个字符转换为int类型,base表示进制
int([x[, base]]) : 将一个字符转换为int类型,base表示进制 >>> int(-12) -12 >>> int(-12.00) -12 > ...
- 转:C#整数三种强制类型转换int、Convert.ToInt32()、int.Parse()的区别
1.int适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型); 2.int.Parse(string sParameter)是个构造函数,参数类型只支持string类型; 3. ...
- C#整数三种强制类型转换int、Convert.ToInt32()、int.Parse()、string到object 的区别
1.int适合简单数据类型之间的转换,C#的默认整型是int32(不支持bool型); 2.int.Parse(string sParameter)是个构造函数,参数类型只支持string类型; 3. ...
- 语法错误 : 缺少“;”(在“*”的前面) 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
sv2010编译的时候遇到错误: error C2143: 语法错误 : 缺少“;”(在“*”的前面) error C4430: 缺少类型说明符 - 假定为 int.注意: C++ 不支持默认 int ...
- C# 求余 int a = 371 / 100 % 10,求a的结果为多少?//nt 和int类型计算得到的结果还是int类型
//int 和int类型计算得到的结果还是int类型 eg:int a = 371 / 100 % 10,求a的结果为多少? 首先371除以100,再让此结果除以10求余数. 一 371除以100得到 ...
- 串口发送浮点型数据及int(2个字节)long int(4个字节)的方法
方法一: 直接把float数据拆分为4个unsigned char(由于数字没法拆分,所以只能用指针的),发过去,在合并为float. 其中有两点要注意. (1)大端存储,小端存储:如果搞错读取数据就 ...
随机推荐
- node.js在linux下的安装
简单说就是解压后,在bin文件夹中已经存在node以及npm,如果你进入到对应文件的中执行命令行一点问题都没有,不过不是全局的,所以将这个设置为全局就好了. ? 1 2 3 cd node-v0.10 ...
- matlab使用
1.nargin 在matlab中定义一个函数时, 在函数体内部, nargin是用来判断输入变量个数的函数. 2.assert “断言”,“坚持自己的主张”.判断函数. http://www.cnb ...
- RocketMQ生产者示例程序
转载请注明出处:http://www.cnblogs.com/xiaodf/ 本示例展示了一个RocketMQ producer的简单实现,通过解析文本文件获取输入数据,将数据经过Avro序列化后发送 ...
- 机械键盘那些事[我用过的minila Filco cherry 3494 阿米洛87]
用过几月下来.最终现在还能流畅使用的,就剩下3494 跟 minila了. 想起购买的初衷.cherry是泰斗,红轴轻柔,所以三把全红轴. 之后,觉得携带外出不方便,所以就又入了个MINILA. 再后 ...
- [20150925]Linux之文件系统与SHELL
Linux之文件系统与SHELL 文件系统介绍 ext2/ext3/ext4 Ext2是GNU/Linux系统中标准的文件系统.这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有 ...
- Webview 与h5的交互
步骤:H5代码 <html> <head> <meta charset="UTF-8"> <title>交互Demo ...
- Java 异步处理简单实践
Java 异步处理简单实践 http://www.cnblogs.com/fangfan/p/4047932.html 同步与异步 通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理,而异 ...
- 【python】*与** 参数问题
可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的,可以是1个.2个到任意个,还可以是0个. 我们以数学题为例子,给定一组数字a,b,c……,请计算a2 ...
- 《MySQL 存储过程编程》-读书笔记
本书结构: 第一部分:存储编程基础 第1章:存储过程程序基础 第2章:MySQL存储编程指南 第3章:语言基础 第4章:语句块 第5章:在存储程序中使用SQL 第一章:MySQL存储程序介绍 存储程序 ...
- chrome常用配置
插件类: Gestures for Google Chrome 增加鼠标手势 安装后需重启 JSONView 自动格式化页面输出的json数据