正如您所看到的,我只是获取一个变量地址并通过其他变量和指针来回获取它。通过 printf 我可以看到地址 1、值 2 和地址 2 都具有相同的值。但是当我尝试取消引用address2(与address1和&value具有相同的值)时,我收到错误。为什么?
#include <stdio.h>
#include <stdint.h>
int main()
{
uint32_t value = 0;
uint32_t* address1 = NULL;
uint32_t* address2 = NULL;
address1 = &value;
printf("address1: %x\n", address1);
uint32_t value2 = (uint32_t)address1;
printf("value2: %x\n", value2);
address2 = (uint32_t*)value2;
printf("address2: %x\n", address2);
uint32_t value3 = *address2; //fault here
printf("*value2: %u\n", value3);
return 0;
}
Run Code Online (Sandbox Code Playgroud)