CS-APP:Section 5.1,Memory aliasing :看上去逻辑一样,执行结果一样吗?
以下是一段代码,在表面上是相同的结果和逻辑,但在xp = yp时,会有不同的结果;
2 {
3 *xp += *yp;
4 *xp += *yp;
5 }
6
7 void twiddle2(int *xp,int *yp)
8 {
9 *xp += 2* *yp;
10 }
测试代码:
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
测试结果:
2 twiddle2 xp != yp :a = 5;b= 2
3 twiddle1 xp == yp :c = 12
4 twiddle2 xp == yp :c = 9
5
转载于:https://www.cnblogs.com/BpLoveGcy/archive/2010/04/07/1706821.html
CS-APP:Section 5.1,Memory aliasing :看上去逻辑一样,执行结果一样吗?相关推荐
- 深入了解计算机系统(CS:APP)思考题
QA1 1.简述C.ASM.ML的关系,各自优缺点? 机器语言是二进制数据表示的语言,机器可以直接识别:汇编语言是与机器指令一一对应的助记符,是一种低级语言,经过汇编和链接之后机器可以运行:C语言在低 ...
- CS:APP二进制炸弹phase2
写在前面 在前文<CS:APP二进制炸弹phase1>中成功"破解"了phase_1,毕竟是第一个阶段,非常简单.本篇来破解第二阶段.let's go!!! 分析 反汇 ...
- APP开发所需时间,看完这些你就懂了
在这个互联网时代,拥有一款专属APP软件对于企业来说在品牌宣传.服务对接等方面都是很大的助力,所以APP定制开发已经成为了广泛需求.在开发APP的时候,我们除了关心费用.作用等,也比较关注开发一款AP ...
- APP测试基本流程以及APP测试要点梳理,不看了不后悔系列!
前言:相信很多刚刚步入测试行业的小伙伴对于APP测试不是很熟悉,这次我为大家提供一篇宝藏文章,希望大家喜欢,谢谢! 一.APP测试基本流程 1.流程图 2.测试周期 测试周期可按项目的开发周期来确定测 ...
- linux怎么查看定时任务有没有运行,怎么看crontab定时任务是否执行
定时执行操作命令,每一个用户拥有自己的crontab,那么大家知道怎么看crontab定时任务是否执行呢?接下来大家跟着学习啦小编一起来了解一下的看crontab定时任务是否执行解决方法吧. 看cro ...
- 如何看懂Postgres的执行计划
如何看懂Postgres的执行计划test=# insert into test select id from (select generate_series(1,10000000))ids(id); ...
- 微信小程序(看文档写实例十)微信小程序课堂宝APP实现我的模块相关界面及逻辑
继上篇博文,这篇完成最后一个模块,即我的模块. 一.页面效果 这个模块是和用户类型相关的,因此老师账号和学生账号能看的功能不一样,老师端效果如下: 点击头像到达个人信息如下: 点击后可以做相应的修改. ...
- java可以开发安卓app吗,Java开发者必看
前言 今年互联网形式依旧严峻,再次爆发几次大规模裁员潮.我决定把这篇文章分享出来帮助那些对前途感到迷茫的朋友.根据粉丝投稿的真实经历改编 在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱, ...
- CS:APP 计算机系统 课程大作业
学号:120L022004 目 录 第1章 概述... - 4 - 1.1 Hello简介... - 4 - 1.2 环境与工具... - 4 - 1.3 中间结果... - 5 - 1.4 本章小 ...
最新文章
- python随机选取列表中的一个字符串_如何从Python中的列表中选择随机字符串?
- QApplicationQPushButton
- 设计企业网站大纲_哈尔滨企业网站设计费用,网站开发公司_华阳网络
- 【Python小游戏】扫雷游戏竟有世界排行榜,中国90后00后霸占半壁江山?
- CloudFoundry环境上的三种端口,您分清楚了吗
- Python | threading04 - 使用信号量,实现线程间同步
- Django学习(二)
- Echarts中国地图json文件,去除诸岛
- 输入法自定义短语笔记/md常用配置/搜狗输入法自定义词库推荐
- 真杜比全景声家庭影院级投影设备,当贝做到了五千元内也支持
- 如何删除ZIP压缩包的密码?
- weblogic的WTC接口配置方法(发送方)
- Ubuntu18.04 + RTX 2080 Ti 安装NVIDIA显卡驱动的一些坑
- Excel调整行高,鼠标右键直接选中一行进行调整了
- not in和or 出的问题
- quartz报错:Couldn‘t retrieve trigger: No record found for selection of Trigger with key—————————————
- c语言烟花发射原理,烟花发射原理
- 【编译原理】WHILE循环语句的翻译程序设计与实现(递归下降法、输出四元式)(赋值语句的词法分析、语义分析)
- 西语加计算机专业怎么样,如何在电脑上添加西班牙语输入法?
- (第一章) UI---PS基础和选框工具
热门文章
- php7.0 + mysql5.7.10 + nginx7.0 web开发环境搭建(CentOS7)
- Photoshop 隐藏的快捷键
- 【Elasticsearch 2.x】issues
- iOS中的两种搜索方式UISearchDisplayController和UISearchController
- Nginx常见的错误及解决方法
- 压缩目录Linux常用的几种文件压缩解压方法
- 我学到的C#——基础
- SafeNet宣布推出其最小的圣天诺HASP硬件型软件保护锁
- 自由是有代价的:聊聊这几年尝试的道路
- CAPEX与OPEX