不,你要求的是你的实现中字符指针的大小为4.
那是因为你将取消引用的int指针p转换为char指针,然后询问它的大小.
打破它:
sizeof((char *)(*p))
| \__/
| \_ Dereference p to get an int.
\___________/
\_____ Convert that to a char * (size = 4).
如果你想处理你的int的第一个字符(毕竟,你是一个你投射的字符数组),你应该使用:
sizeof(*((char*)(p)))
这是int指针,强制转换为char指针,然后解除引用.
打破这种情况:
sizeof(*((char *)(p)))
| \________/
| \_ Get a char * from p (an int *)
\___________/
\_____ Dereference that to get a char (size = 1).