【问题标题】:Getting the address of a variable [duplicate]获取变量的地址[重复]
【发布时间】:2014-07-25 12:11:47
【问题描述】:

我在C中写了以下内容,想检索变量x地址

    int x = 10;
    int *address_of_x = &x;
    printf("The address of x is: %s \n", address_of_x);
    printf("The value of x is: %i \n", *address_of_x);

在这种情况下,我把%s 放在哪里,我没有得到任何价值。如果我将其更改为 %i,我会得到一个 integer 值。我期待地址就像是数字和字母的混合体。那么,% 后面的字母在这里重要吗,看起来重要吗?

这种情况下应该怎么做才能得到变量x的地址?

谢谢。

【问题讨论】:

  • %s 表示:获取该指针,将其解释为 char *,并打印它指向的文本。 %i 表示:将 int 以 10 为基数打印。当您传递 int * 时,两者都是错误的。

标签: c pointers printf


【解决方案1】:

试试吧:

printf("The address of x is: %p \n", (void*)address_of_x);

这里的%p代表指针,还有一些标识符you can look here

即%x 将地址显示为漂亮的十六进制数字

【讨论】:

  • 感谢您的回复。 (void*) 是什么意思?
  • 尝试使用%x 打印地址可能会让您在使用 32 位整数的 64 位程序中感到惊讶。
  • @medcompsweng 您确实不需要 (void*),但从技术上讲,printf 需要 (void*) 类型的指针。 void 指针本质上是一个可以表示任何数据类型的指针(您可以查看更多相关信息)。因此,通过将强制转换放在那里,我们只是确保 printf 得到了它应该得到的类型。
【解决方案2】:
printf("The address of x is: %p \n", &x);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2021-04-28
    • 1970-01-01
    相关资源
    最近更新 更多