如何在不使用指针的情况下存储变量的地址?
#include<stdio.h>
int main ()
{
double sum;
double x= ∑
printf("n %lf",x);
}
你做得几乎是对的。但是您将其存储在double
中,变量的内存地址可以是 4 个字节或 8 个字节,具体取决于实现。不过,您应该始终转换为更广泛的类型。目前,将其存储在double
中可能会导致信息丢失。
您需要使用足够宽的数据类型。您可以使用unsigned long long
,但是为了跨平台兼容性,我建议改用stdint.h
中的uint64_t
。还有随之而来的inttypes.h
.
#include<stdio.h>
#include<stdint.h>
#include<inttypes.h>
int main()
{
double sum;
uint64_t x = (uint64_t) ∑
printf("%" PRIx64 "n", x);
}
这可确保使用无符号的 64 位(8 字节(变量,以免丢失信息。
此外,使用PRIx64
格式说明符进行打印,以获取 64 位十六进制形式的输出。
但是请注意,这仅适用于打印地址,并且仅适用于地址。这确实没有任何实际目的。
根据定义,指针是存储另一个地址的对象。 如何在不使用适当的存储变量的情况下存储某些内容?没有其他对象来存储地址,那么你有什么建议?
如果您只想打印要stdout
的地址,只需执行以下操作:
printf("%pn", &sum);
格式说明符%p
允许您传递指针,并且可以直接使用&sum
传递sum
地址的值。