增加空白时的垃圾值*

Poi*_*com 3 c pointers void-pointers

这段代码:

#include <stdio.h>
int main(void)
{
   void *ptr;
   int arr[] = {1,2,3,4,5};
   ptr = arr;
   ptr++;
   printf("%d",*(int*)ptr);
}
Run Code Online (Sandbox Code Playgroud)

打印一些垃圾值,但我期待它打印2.为什么不打印2

Pra*_*rav 5

您无法对void指针执行指针运算,因为编译器不知道指向对象的大小.

您的代码无法在线上编译.我猜它是另一个邪恶的gcc扩展.

  • 我认为gcc在执行算术时将`void*`视为`char*`. (2认同)