当前位置:网站首页>C语言 指针的解引用详解
C语言 指针的解引用详解
2022-08-09 13:23:00 【东区东区!】
实例1:
#include <stdio.h>
int main()
{
int n = 0x11223344;
char *pc = (char *)&n;
int *pi = &n;
*pc = 0; //重点在调试的过程中观察内存的变化。
*pi = 0; //重点在调试的过程中观察内存的变化。
return 0;
}首先,十六进制在内存中逆向存储, 为: 44 33 22 11
第一种情况:当*pc = 0 pc为char类型只修改 1 字节,将44赋值为0
得到 0x11223300
第二种情况, 当*pi = 0 pi为int 类型修改4字节 结果为 0x00
实例2:
#include <stdio.h>
int main()
{
int arr[] = {1,2,3,4,5};
short *p = (short*)arr;
int i = 0;
for(i=0; i<4; i++)
{
*(p+i) = 0;
}
for(i=0; i<5; i++)
{
printf("%d ", arr[i]);
}
return 0;
}当指针为short 类型时,每次只修改2字节
对于数组arr来说,每个元素都占4字节
所以short类型的指针移动4次,共移动了8字节,只讲 1 , 2 修改为0其余不变
结果为 0 0 3 4 5
当题目变,我们把short 改为char ,共移动4字节, 结果为 0 2 3 4 5
改变为int , 共移动16字节,结果为 0 0 0 0 5
边栏推荐
猜你喜欢
随机推荐
操作系统迁移实战之在openEuler上部署MySQL数据库
Mysql seven connection query methods
group by的工作原理和优化思路
RobotFramework 之 库与关键字
Spark读取多目录
pytest 筛选用例
源码编译安装LAMP
哈希表卡片
vs how to use a Button to link to another page
三种ThreadLocal,玩转线程变量保存与传递
iptables防火墙
分布式系统关注点(8)——99%的人都能看懂的「熔断」以及最佳实践 (转载非原创)
Jetpack Compose——TextField及OutlinedTextField(文本框)的使用
Dry+Bean+Dataset R language data analysis, report in English
NC161 二叉树的中序遍历
Where to go to IOE-EBS
Q_08 更多信息
mmdetction
oracle财务数据权限思考
学习opencv-基础应用









