【问题标题】:get the content of a const void获取 const void 的内容
【发布时间】:2016-05-15 16:36:14
【问题描述】:

我正在尝试获取 const void 指针所指向的数据的值。 为了获得不同的方式,我编写了这个简单的示例。 但由于某种原因它不起作用。实际上我希望 printf 写“数据 5 和指针的地址” 有人可以帮我吗?

谢谢

这里是代码

#include <stdio.h>
#include <stdlib.h>

int main(){
    const void * data;
    int b = 5;
    data = &b;
    printf("data %d %p ",&data,&data);
}

【问题讨论】:

  • 如果你想解释数据,你需要知道(并因此给它)它的类型。不要使用void。 C 没有用于识别静态类型系统之外的数据类型的内置机制。
  • printf("data %d %p ", *(const int*)data, &amp;data);
  • 数据前的“(const int)”解决了这个谢谢

标签: c pointers constants void


【解决方案1】:

data 持有b 的地址。要使用%p 打印出该地址,只需传递data&amp;datadata 的地址,而不是b 的地址。

要获取该地址的值,您需要使用 *data 取消引用 data。但有一个问题。您不能取消引用 void 指针,因为它们的数据类型未知。要在该地址获取 int 值,您需要先将 const void * 转换为 const int *。然后你可以取消引用结果。

printf("data %d %p\n", *(const int *) data, data);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多