喜闻乐见的const int *p、int* const p、const int* const p
不废话直接代码示例:
void f(const int *p) {
int b = ;
*p = ; // error
p = &b; // fine
}
void f(int* const p) {
int b = ;
*p = ; // fine
p = &b; // error
}
void f(const int* const p) {
int b = ;
*p = ; // error
p = &b; // error
}
然而,如果function f使用了const作为承诺(不修改p或者不修改p指向的区域或者二者都有),function g与f有同样的interface但g没有使用const作任何承诺,如果f把p传递给了g,f是不会对g的行为做任何保证的(也就是说即便g对p或者p指向的区域做出了修改,编译器仍然不会报错,这是合理的,因为f只保证自己不会直接修改,但不保证自己调用的其他function不作修改)
下面是个示例:
#include <stdio.h> void f();
void g(); int main() {
int a = ;
int *p = &a;
f(p);
printf("a=%d\n", a);
return ;
} void f(const int *p) {
//*p = 10; // error
g(p);
} void g(int *p) {
*p = ;
}
喜闻乐见的const int *p、int* const p、const int* const p的更多相关文章
- C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
http://blog.csdn.net/gmstart/article/details/7046140 在C++的类定义里面,可以看到类似下面的定义: 01 class List { 02 priv ...
- "int?" 是什么类型?和"int"有何区别
int?:表示可空类型,就是一种特殊的值类型,它的值可以为null用于给变量设初值得时候,给变量(int类型)赋值为null,而不是0int??:用于判断并赋值,先判断当前变量是否为null,如果是就 ...
- 把C程序的int main(void)改成static int main(void)会怎样呢?
如题,把C程序中的主函数int main(void)改成static int main(void)会怎么样呢? 比如把 #include <stdio.h> int main(void) ...
- C++中int转string与string转int
#include "stdafx.h" #include "string" #include "iostream" #include &qu ...
- 转:int整数除以int整数一定得到的是int整数(易忽视)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u014053368/article/de ...
- Mybatis异常--java.lang.IllegalArgumentException: NO ENUM const class org.apache.ibatis.type.JdbcType.int
今天下午写代码时发现一直报错,找了半天都没找到错误原因. 最后才发现原来是XML配置错误,某条属性的JdbcType我按照以前ibatis的习惯写的int,但是Mybatis不识别的. 上Mybati ...
- CTC安装及其错误解决办法:binding.cpp:92:49: error: cannot convert ‘THCudaTensor*’ to ‘const THFloatTensor*’ for argument ‘1’ to ‘int64_t THFloatTensor_size(const THFloatTensor*, int)’
CTC安装: 1. 在终端执行命令:git clone https://github.com/SeanNaren/warp-c) (效果如下图,大家不用管我前面括号的内容,那是我打开的虚拟环境) 2. ...
- 为什么const对象只能调用const成员函数,而不能调用非const成员函数?
在c++中,我们可以用const来定义一个const对象,const对象是不可以调用类中的非const成员函数,这是为什么呢?下面是我总结的一些原理. 假设有一个类,名字为test代码如下: clas ...
- cstring、string、wstring、int、char*、tchar、 int、dword等相互转换代码输出测试
#include <string> #include <tchar.h> // _TCHAR #include <stdlib.h> #include <io ...
- int数组转string数组和int数组转string中间用逗号隔开
//int 数组转string数组 ,,,}; string result=test.Select(i => i.ToString()).ToArray(); //int 数组转 string中 ...
随机推荐
- pandas操作,感觉不错,复制过来的
整理pandas操作 本文原创,转载请标识出处: http://www.cnblogs.com/xiaoxuebiye/p/7223774.html 导入数据: pd.read_csv(filenam ...
- C#中函数库方式重复播放MP3音乐
public void play() { this.TemStr = ""; this.TemStr = this.TemStr.PadLeft(0x7f, Convert.ToC ...
- Problem O: 逆序输出——C语言初学者百题大战之二十
#include<stdio.h> int main() { int a,b,c,d,e,n; scanf("%d",&n); a=n/; b=n%/; c=n ...
- @RequestMapping注解的使用,Controller方法返回值
1,web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=" ...
- winform TreeView树节点上下移动
/// <summary> /// 上移 /// </summary> /// <param name="sender"></param& ...
- zk介绍
1. 配置管理 Zookeeper提供了这样的一种服务:一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣的都可以获得变更.这样就省去手动拷贝配置了,还保证了可靠和一致性. ...
- renderdoc on android
国内没人发这种贴...一个发了renderdoc with unity是在pc平台跑的 没有挂android 这货有点坑啊 花了好几个小时 wiki上的issue基本全看了...感觉是版本提交的log ...
- SpringMvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- Solr6.6.0 用 SimplePostTool与界面dataimport索引方式区别
通过测试发现用SimplePostTool与solr界面dataimport索引数据的结果有如下区别: 1.SimplePostTool索引数据对结构化数据文件索引比较合适,比如csv/json/xm ...
- 【MySQL】海量量数据查询优化
参考资料: mysql处理海量数据时的一些优化查询速度方法:http://www.cnblogs.com/lingiu/p/3414134.html mysql千万级大数据SQL查询优化:http:/ ...