不废话直接代码示例:

 1 void f(const int *p) {
 2
 3     int b = 10;
 4
 5     *p = 10; // error
 6
 7     p = &b; // fine
 8
 9 }
10
11 void f(int* const p) {
12
13     int b = 10;
14
15     *p = 10; // fine
16
17     p = &b; // error
18
19 }
20
21 void f(const int* const p) {
22
23     int b = 10;
24
25     *p = 10; // error
26
27     p = &b; // error
28
29 }

然而,如果function f使用了const作为承诺(不修改p或者不修改p指向的区域或者二者都有),function g与f有同样的interface但g没有使用const作任何承诺,如果f把p传递给了g,f是不会对g的行为做任何保证的(也就是说即便g对p或者p指向的区域做出了修改,编译器仍然不会报错,这是合理的,因为f只保证自己不会直接修改,不保证自己调用的其他function不作修改)

下面是个示例:

 1 #include <stdio.h>
 2
 3 void f();
 4 void g();
 5
 6
 7 int main() {
 8     int a = 0;
 9     int *p = &a;
10     f(p);
11     printf("a=%d\n", a);
12     return 0;
13 }
14
15 void f(const int *p) {
16     //*p = 10; // error
17     g(p);
18 }
19
20 void g(int *p) {
21     *p = 999;
22 }

转载于:https://www.cnblogs.com/qrlozte/p/4019209.html

喜闻乐见的const int *p、int* const p、const int* const p相关推荐

  1. 容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用

    顺序容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用,下面有个例子说明问题: #include <iost ...

  2. const 常量_条款03:尽可能使用const

    const 允许你指定一个语义约束(也就是指定一个"不该被改动"的对象),而编译器会强制实施这项约束. 1.const指针 如果关键字const出现在星号左边,表示被指物是常量:如 ...

  3. c语言中entern int x y,关于extern和int main()的结构有关问题

    关于extern和int main()的结构问题 本帖最后由 hashcat 于 2015-09-20 12:34:50 编辑 这是c实现md5加密的代码,报错部分是两处extern,其实也就是两处e ...

  4. c语言中 static int,c语言中static unsigned int n=0;是什么意思?请大师指点迷津,学生有礼了。...

    c语言中static unsigned int n=0;是什么意思?请大师指点迷津,学生有礼了.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我 ...

  5. C++实现int转char*和char*转int

    #include <iostream> #include <string.h> using namespace std; /***将字符串转成int***/ int char2 ...

  6. mysql int(40)_MySQL Integer类型与INT(11)

    1.介绍 Integer类型,即整数类型,MySQL支持的整数类型有TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT. 1.1 空间和范围 每种整数类型所需的存储空间和范围如 ...

  7. int a[5]={}, a+1与(int*)a+1的区别

    /*int a[5]={}, &a+1与(int*)a+1的区别 */ #include <stdio.h>int main() {int b, *pb;char *pb2;pb ...

  8. int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg)

    这是一个来自linux内核4.20.1的代码段(af_inet.c): /** ioctl() calls you can issue on an INET socket. Most of these ...

  9. python int函数的实现_python实现int函数的案例分析

    python实现int函数的案例分析 发布时间:2020-08-06 14:35:55 来源:亿速云 阅读:88 作者:小新 python实现int函数的案例分析?这个问题可能是我们日常学习或工作经常 ...

  10. int? 是什么类型?和int有何区别

    int?:表示可空类型,就是一种特殊的值类型,它的值可以为null用于给变量设初值得时候,给变量(int类型)赋值为null,而不是0int??:用于判断并赋值,先判断当前变量是否为null,如果是就 ...

最新文章

  1. python hibernate_将Java/MVC/Hibernate webapp移植到Python
  2. python线下培训-济南Python线下培训班哪个好
  3. MySQL——统计某个表每天的总量和增量问题解决方案
  4. LVS(14)——DR模型实践、交换机
  5. C++ inline variable
  6. php ci model条件查询,Laravel关系模型指定条件查询方法
  7. Python字符串模糊匹配库FuzzyWuzzy
  8. [转]迭代、集合、字典表和列表
  9. Qt工作笔记-QLineEdit用正则限制文本框的输入内容+正则表达式语法
  10. IIS+PHP环境下出现HTTP 500服务器内部错误——请检查权限设置
  11. 端口占用问题解决办法(以1099端口为例)
  12. Django | 静态文件处理
  13. html用post怎么加密,post提交数据如何加密
  14. win10默认壁纸位置
  15. 我国留学低龄化趋势显著-家长失望国内应试教育-留学-低龄化-教育改革
  16. java练习题-猜数字游戏
  17. 12c 新特性-统一审计(Unified Auditing)
  18. 【Python】正则表达式判断是否存在连续N个字母
  19. 领英加人的方法和细节,一个月轻松加1000+人
  20. 0906期特别策划——“架构师大阅兵”

热门文章

  1. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计
  2. java jlist 更新_java – 更新JList
  3. python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列
  4. mysql和sqlserver共存_mysql 和sqlserver的 多行合并成一行
  5. python做定时任务的方式及优缺点_python BlockingScheduler定时任务及其他方式的实现...
  6. oracle定时器怎么开启,Oracle的定时器使用示例
  7. MSP430低功耗模式-while循环失效
  8. Monitor CodeForces - 846D ——二维前缀和
  9. 深度学习(6)构造简单的神经网络
  10. 获取系统时间精确到毫秒级C++代码实现