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)大端存储,小端存储:如果搞错读取数据就 ...
 
随机推荐
- SqlServer性能优化:创建性能监视器(二)
			
添加三个选项: 下一步就可以了 Sql跟踪的模板: 跟踪Sql 语句的执行情况: 使用刚才的新建的模板: 用到的Sql语句: select * from [Sales].[SalesOrderDeta ...
 - Win10/UWP新特性系列—Launcher实现应用间的通信
			
UWP中,微软为Windows.System.Launcher启动器新增了很多的功能,以前只能启动App,打开指定扩展名文件,对uri协议的解析,以及当启动的应用没有安装时则会提示前往商店下载等. 如 ...
 - [URAL]刷题记录表
			
URAL 1001. A + B 1002. 简单题,开方计算! 1003.
 - ios项目接入sdk事项
			
使用cocos2d-x引擎创建的项目在xcode里可以看到都带有一个ios目录,把要接入的sdk的包含.framework库文件和.bundle的资源文件的父目录拖入到xcode项目里的这个ios目录 ...
 - Java:String和Date、Timestamp之间的转换
			
一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2016-9-28 12:25:55" ...
 - spring-websocket的搭建
			
Apach Tomcat 8.0.3+MyEclipse+maven+JDK1.7 spring4.0以后加入了对websocket技术的支持,撸主目前的项目用的是SSM(springMVC+spri ...
 - dataWithContentsOfURL报错问题
			
NSError *error = nil; NSData* videoData = [NSData dataWithContentsOfURL:[NSURL URLWithString:self.re ...
 - wordpress(二)wordpress环境迁移
			
迁移wordpress到服务器 本地环境如下 win8.1 appser 服务器环境如下 centos7 lnmp 1.使用phpmyadmin备份本地wordpress站点的数据库 2.备份本地wo ...
 - ipod中,写计时器倒计时界面倒计时没有更改
			
innerText 改为textContent. IE.Safari.Opera和Chrome支持innerText属性.Firefox虽然不支持innerText,但支持作用类似的textConte ...
 - MSSQL FOR MXL PATH 运用(转载)
			
FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作.那么以一个实例为主 ...