如何在没有指针的情况下存储变量的地址

问题描述 投票:0回答:1

我们如何在不使用指针的情况下存储变量的地址?

#include<stdio.h>
int main ()
{
    double sum;
    double x= &sum;

    printf("\n %lf",x);
}
c pointers
1个回答
-1
投票

您做得差不多。但是您将其存储在double中,根据实现的不同,变量的内存地址可以是4个字节或8个字节。不过,您应该始终将其转换为更广泛的类型。现在,将其存储在double中可能会导致信息丢失。

您需要使用足够宽的数据类型。您可以使用unsigned long long,但是为了实现跨平台兼容性,我建议改用uint64_t中的stdint.h

#include<stdio.h>
#include<stdint.h>

int main()
{
    double sum;
    uint64_t x = (uint64_t) &sum;

    printf("%llx\n", x);
}

这将确保您使用无符号的64位(8字节)变量,因此不会丢失信息。

也使用%x格式说明符打印以获取十六进制格式的输出。

但是请注意,这仅适用于打印地址和地址。这确实没有任何实际目的。

© www.soinside.com 2019 - 2024. All rights reserved.