|
发表于 2020-5-19 00:51:21
|
显示全部楼层
编译器正好把变量p放在了变量b的后面
- #include<stdio.h>
- int main()
- {
- char a=0,b=0;
- int *p=(int *)&b;
- printf("首先\na:%d b:%d\n",a,b);
- printf("a:%p b:%p p:%p\n",&a,&b,p);
- //*p=258;
- *p=0x12345678;
- printf("之后\na:%d b:%d\n",a,b);
- printf("a:%p b:%p p:%p\n",&a,&b,p);
- return 0;
- }
复制代码
- 首先
- a:0 b:0
- a:0xffffcc17 b:0xffffcc16 p:0xffffcc16
- 之后
- a:86 b:120
- a:0xffffcc17 b:0xffffcc16 p:0xffff1234
复制代码
这个1234就是这句导致的
*p=0x12345678;
- #include<stdio.h>
- int main()
- {
- char a=0,b=0;
- int *p=(int *)&b;
- printf("首先\na:%d b:%d\n",a,b);
- printf("a:%p b:%p p:%p\n",&a,&b,p);
- //*p=258;
- *p=0xabcd5678;
- printf("之后\na:%d b:%d\n",a,b);
- printf("a:%p b:%p p:%p\n",&a,&b,p);
- return 0;
- }
复制代码
- 首先
- a:0 b:0
- a:0xffffcc17 b:0xffffcc16 p:0xffffcc16
- 之后
- a:86 b:120
- a:0xffffcc17 b:0xffffcc16 p:0xffffabcd
复制代码
变成abcd了
|
|