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)大端存储,小端存储:如果搞错读取数据就 ...
随机推荐
- iOS 展示二级页面
ViewController 调用 #import "ViewController.h" @implementation ViewController - (void)viewDi ...
- html,if标签使用
$vo.auth_id eq $vo2.auth_pid报错不能用 condition里面访问变量,不能用点的形式,应该用['']的形式访问
- Mybatis-动态 SQL
MyBatis 的强大特性之一便是它的动态 SQL. 如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省 ...
- MySQL mac 安装
MySQL mac的安装着实费了些功夫.最开始想省事用brew 安装,结果总是有问题,原来brew安装MySQL并没那么简单,还要进行一些配置.索性直接到网站下载: http://www.mysql. ...
- excel导入导出
using System; using System.Collections.Generic; using System.Linq; using System.Text; using FS.Exten ...
- 论文笔记之:Co-saliency Detection via A Self-paced Multiple-instance Learning Framework
Co-saliency Detection via A Self-paced Multiple-instance Learning Framework T-PAMI 2016 摘要:Co-sal ...
- boost-asio-cpp-network-programming阅读笔记
第二章:boost.asio 的基本原理 网络api boost.asio的命名空间 IP地址 端点 sockets 同步错误代码 socket成员函数 其他注意事项 read/write/conne ...
- 黄聪:PHP解决textarea内容换行存入数据库,如何解析取出不能自动换行
解决办法: <textarea rows="5" style="height: auto;" ><?php //按行分割,然后每行输出后带上一 ...
- bootstrap-巨幕、缩略图、警告框
巨幕: <div class="jumbotron"> <div class="container"> <h1>W3Scho ...
- 安装android studio
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6 sudo apt-get install g++-multil ...