获取 const void 的内容
get the content of a const void
我正在尝试获取由 const void 指针指向的数据的值。
为了获得不同的方式,我写了这个简单的例子。
但出于某种原因,它不会 work.Actually 我希望 printf 写 "data 5 and the address of the pointer "
有人可以帮我吗?
谢谢
这是代码
#include <stdio.h>
#include <stdlib.h>
int main(){
const void * data;
int b = 5;
data = &b;
printf("data %d %p ",&data,&data);
}
data
保存 b
的地址。要使用 %p
打印出该地址,只需传递 data
。 &data
是 data
的地址而不是 b
的地址。
要获取该地址的值,您需要使用 *data
取消引用 data
。但有一个陷阱。您不能取消引用 void
指针,因为它们的数据类型未知。要在该地址获得 int
值,您需要先将 const void *
转换为 const int *
。然后你可以取消引用结果。
printf("data %d %p\n", *(const int *) data, data);
我正在尝试获取由 const void 指针指向的数据的值。 为了获得不同的方式,我写了这个简单的例子。 但出于某种原因,它不会 work.Actually 我希望 printf 写 "data 5 and the address of the pointer " 有人可以帮我吗?
谢谢
这是代码
#include <stdio.h>
#include <stdlib.h>
int main(){
const void * data;
int b = 5;
data = &b;
printf("data %d %p ",&data,&data);
}
data
保存 b
的地址。要使用 %p
打印出该地址,只需传递 data
。 &data
是 data
的地址而不是 b
的地址。
要获取该地址的值,您需要使用 *data
取消引用 data
。但有一个陷阱。您不能取消引用 void
指针,因为它们的数据类型未知。要在该地址获得 int
值,您需要先将 const void *
转换为 const int *
。然后你可以取消引用结果。
printf("data %d %p\n", *(const int *) data, data);