Ran*_*rer 2 c pointers sizeof void void-pointers
我尝试使用 sizeof() 来查找 void 指针指向的值的大小,我想用它来打印该值。
这段代码
int num = 5;
void *voidPtr;
voidPtr = #
printf("%d", sizeof(*voidPtr));
Run Code Online (Sandbox Code Playgroud)
打印,1。我怎样才能打印4?
如果有任何其他方法来打印 void 指针的值,请告诉我
提前致谢。
指针的值仅传达对象的起始地址,而不传达有关其大小的任何信息。
如果指针是完整类型,则指针的类型本质上传达有关其指向的对象的大小的信息。然而,void它是不完整的,并且 avoid *没有提供有关它源自的对象的大小的信息(除了可能通过标准 C 的扩展和调试功能)。
一般来说,如果您的程序需要知道 avoid *指向的内容的大小,它必须自行跟踪该信息。
*voidPtr在标准 C 中无效。它是 GCC 扩展,这就是 的sizeof(*voidptr)原因1。任何其他(非 GCC 系列)编译器都不会编译此代码。
%d打印格式错误size_t。你应该改用%zu。
C中没有办法确定指针引用的对象void大小