
很有意思的c语言printf问题
发布日期:2021-05-06 22:01:47
浏览次数:25
分类:精选文章
本文共 765 字,大约阅读时间需要 2 分钟。
在Ubuntu系统中测试C语言程序时,遇到了一段代码需要验证其执行效果。代码如下:
#include "stdio.h"int main(void){ int a[2] = {0x123, 0x234}; int *p; p = a; *(p + 1) = 0x789; long long b; b = *(long long*)p; printf("addr a[0]:%p\n", &a); printf("addr a[1]:%p\n", a[1]); printf("addr p:%p\n", p); printf("addr b:%p\n", &b); printf("b:%llx\n", b); printf("size of b:%lu\n", sizeof(b)); return 0;}
运行结果如下:
addr a[0]:0x7ffe58d24090addr a[1]:0x7ffe58d24094addr p:0x7ffe58d24090addr b:0x7ffe58d240a0b:78900000123size of b:8
从结果可以看出,数组a
的两个元素地址分别为0x7ffe58d24090
和0x7ffe58d24094
。指针p
指向数组的起始地址0x7ffe58d24090
。通过将p
向右移动一位并赋值0x789
,修改了数组的第二个元素。然后,将p
指向long long
类型的变量b
,并成功赋值为78900000123
。此外,b
的大小为8
字节,与long long
类型的标准大小一致。
通过验证可以确认,代码在Ubuntu系统中运行正常,数组地址和指针变量的赋值均符合预期。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月07日 00时57分49秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
VHDL代码风格
2019-03-05
图像处理系列1.skimage
2019-03-05
Object Clone
2019-03-05
Javascript中String支持使用正则表达式的四种方法
2019-03-05
2021年判断浏览器最新写法,你都掌握了吗?
2019-03-05
【IoT】蓝牙BLE基础:CC254x通信系列之模拟SPI协议
2019-03-05
【IoT】TI BLE CC2541 串口控制蓝牙详解
2019-03-05
【产品】项目管理的五个过程和九大知识领域之二
2019-03-05
【项目管理】项目管理流程浅析
2019-03-05
【Tool】如何使用 Uniflash 烧写 WIFI 芯片 CC3200
2019-03-05
copy_{to, from}_user()的思考
2019-03-05
Web前端安全策略之CSRF的攻击与防御
2019-03-05
纯客户端页面关键字搜索高亮jQuery插件
2019-03-05
linux运维中常用的命令
2019-03-05
M1芯片的macbook安装王者荣耀,原神,崩坏方法
2019-03-05
Java温故而知新-反射机制
2019-03-05
eclipse引用sun.misc开头的类
2019-03-05
firefox中angular2嵌套发送请求问题
2019-03-05
【mybatis3】调试/断点打印日志
2019-03-05
C++
2019-03-05