以下是一段代码,在表面上是相同的结果和逻辑,但在xp = yp时,会有不同的结果;

 1 void twiddle1(int *xp,int *yp)
 2 {
 3     *xp += *yp;
 4     *xp += *yp;
 5 }
 6 
 7 void twiddle2(int *xp,int *yp)
 8 {
 9     *xp += 2* *yp;
10 }

测试代码:

 1 /*
 2  ============================================================================
 3  Name        : test1.c
 4  Author      : Gump Yin
 5  Version     :
 6  Copyright   : Your copyright notice
 7  Description : Hello World in C, Ansi-style
 8  ============================================================================
 9  */
10 
11 #include <stdio.h>
12 #include <stdlib.h>
13 
14 void twiddle1(int *xp,int *yp)
15 {
16     *xp += *yp;
17     *xp += *yp;
18 }
19 
20 void twiddle2(int *xp,int *yp)
21 {
22     *xp += 2* *yp;
23 }
24 
25 int main(void) {
26     int a = 1,b =2;
27     twiddle1(&a,&b);
28     printf("twiddle1 xp != yp :a = %d;b= %d\n",a,b);
29     a = 1;b =2;
30     twiddle2(&a,&b);
31     printf("twiddle2 xp != yp :a = %d;b= %d\n",a,b);
32     int c = 3;
33     twiddle1(&c,&c);
34     printf("twiddle1 xp == yp :c = %d\n",c);
35     c = 3;
36     twiddle2(&c,&c);
37     printf("twiddle2 xp == yp :c = %d\n",c);
38     return EXIT_SUCCESS;
39 }
40 

测试结果:

1 twiddle1 xp != yp :a = 5;b= 2
2 twiddle2 xp != yp :a = 5;b= 2
3 twiddle1 xp == yp :c = 12
4 twiddle2 xp == yp :c = 9

转载于:https://www.cnblogs.com/BpLoveGcy/archive/2010/04/07/1706821.html

CS-APP:Section 5.1,Memory aliasing :看上去逻辑一样,执行结果一样吗?相关推荐

  1. 深入了解计算机系统(CS:APP)思考题

    QA1 1.简述C.ASM.ML的关系,各自优缺点? 机器语言是二进制数据表示的语言,机器可以直接识别:汇编语言是与机器指令一一对应的助记符,是一种低级语言,经过汇编和链接之后机器可以运行:C语言在低 ...

  2. CS:APP二进制炸弹phase2

    写在前面 在前文<CS:APP二进制炸弹phase1>中成功"破解"了phase_1,毕竟是第一个阶段,非常简单.本篇来破解第二阶段.let's go!!! 分析 反汇 ...

  3. APP开发所需时间,看完这些你就懂了

    在这个互联网时代,拥有一款专属APP软件对于企业来说在品牌宣传.服务对接等方面都是很大的助力,所以APP定制开发已经成为了广泛需求.在开发APP的时候,我们除了关心费用.作用等,也比较关注开发一款AP ...

  4. APP测试基本流程以及APP测试要点梳理,不看了不后悔系列!

    前言:相信很多刚刚步入测试行业的小伙伴对于APP测试不是很熟悉,这次我为大家提供一篇宝藏文章,希望大家喜欢,谢谢! 一.APP测试基本流程 1.流程图 2.测试周期 测试周期可按项目的开发周期来确定测 ...

  5. linux怎么查看定时任务有没有运行,怎么看crontab定时任务是否执行

    定时执行操作命令,每一个用户拥有自己的crontab,那么大家知道怎么看crontab定时任务是否执行呢?接下来大家跟着学习啦小编一起来了解一下的看crontab定时任务是否执行解决方法吧. 看cro ...

  6. 如何看懂Postgres的执行计划

    如何看懂Postgres的执行计划test=# insert into test select id from (select generate_series(1,10000000))ids(id); ...

  7. 微信小程序(看文档写实例十)微信小程序课堂宝APP实现我的模块相关界面及逻辑

    继上篇博文,这篇完成最后一个模块,即我的模块. 一.页面效果 这个模块是和用户类型相关的,因此老师账号和学生账号能看的功能不一样,老师端效果如下: 点击头像到达个人信息如下: 点击后可以做相应的修改. ...

  8. java可以开发安卓app吗,Java开发者必看

    前言 今年互联网形式依旧严峻,再次爆发几次大规模裁员潮.我决定把这篇文章分享出来帮助那些对前途感到迷茫的朋友.根据粉丝投稿的真实经历改编 在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱, ...

  9. CS:APP 计算机系统 课程大作业

    学号:120L022004 目  录 第1章 概述... - 4 - 1.1 Hello简介... - 4 - 1.2 环境与工具... - 4 - 1.3 中间结果... - 5 - 1.4 本章小 ...

最新文章

  1. python随机选取列表中的一个字符串_如何从Python中的列表中选择随机字符串?
  2. QApplicationQPushButton
  3. 设计企业网站大纲_哈尔滨企业网站设计费用,网站开发公司_华阳网络
  4. 【Python小游戏】扫雷游戏竟有世界排行榜,中国90后00后霸占半壁江山?
  5. CloudFoundry环境上的三种端口,您分清楚了吗
  6. Python | threading04 - 使用信号量,实现线程间同步
  7. Django学习(二)
  8. Echarts中国地图json文件,去除诸岛
  9. 输入法自定义短语笔记/md常用配置/搜狗输入法自定义词库推荐
  10. 真杜比全景声家庭影院级投影设备,当贝做到了五千元内也支持
  11. 如何删除ZIP压缩包的密码?
  12. weblogic的WTC接口配置方法(发送方)
  13. Ubuntu18.04 + RTX 2080 Ti 安装NVIDIA显卡驱动的一些坑
  14. Excel调整行高,鼠标右键直接选中一行进行调整了
  15. not in和or 出的问题
  16. quartz报错:Couldn‘t retrieve trigger: No record found for selection of Trigger with key—————————————
  17. c语言烟花发射原理,烟花发射原理
  18. 【编译原理】WHILE循环语句的翻译程序设计与实现(递归下降法、输出四元式)(赋值语句的词法分析、语义分析)
  19. 西语加计算机专业怎么样,如何在电脑上添加西班牙语输入法?
  20. (第一章) UI---PS基础和选框工具

热门文章

  1. php7.0 + mysql5.7.10 + nginx7.0 web开发环境搭建(CentOS7)
  2. Photoshop 隐藏的快捷键
  3. 【Elasticsearch 2.x】issues
  4. iOS中的两种搜索方式UISearchDisplayController和UISearchController
  5. Nginx常见的错误及解决方法
  6. 压缩目录Linux常用的几种文件压缩解压方法
  7. 我学到的C#——基础
  8. SafeNet宣布推出其最小的圣天诺HASP硬件型软件保护锁
  9. 自由是有代价的:聊聊这几年尝试的道路
  10. CAPEX与OPEX