gpt4 book ai didi

c - 双指针指向int变量覆盖内存

转载 作者:行者123 更新时间:2023-11-30 21:33:00 26 4
gpt4 key购买 nike

我直接贴代码了

#include <stdio.h>
struct A
{
int a;
int b;
};
int main()
{
struct A test;
double *p = (double *)&(test.a);
*p = 5;

printf("variable a: %d\n", &test.a);
printf("variable b: %d\n", &test.b);
return 0;
}

我在centos7中运行这段代码,编译器是gcc4.8.5 .而且我的电脑使用little end来存储。

如你所见,变量b的内存会被覆盖,我预计a0x0000 0005b0x0000 0000 .

但答案是:

variable a: 0
variable b: 1075052544

为什么变量 a0x 0000 0000b0x4014 0000

最佳答案

您的代码的行为未定义

一旦将 p 设置为非 double 类型的地址,就无法取消引用它。

要查看编译器对此输入执行的操作,请检查生成的程序集。

关于c - 双指针指向int变量覆盖内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46688641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com