小编Rob*_*sto的帖子

将变量地址分配给指针。取消引用指针会导致分段错误。如何?

正如您所看到的,我只是获取一个变量地址并通过其他变量和指针来回获取它。通过 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)

c variables types pointers memory-address

1
推荐指数
1
解决办法
94
查看次数

标签 统计

c ×1

memory-address ×1

pointers ×1

types ×1

variables ×1