【发布时间】:2014-01-24 10:09:50
【问题描述】:
#include <stdio.h>
#include <string.h>
main()
{
int an_int;
void *void_pointer = &an_int;
double *double_ptr = void_pointer;
*double_ptr = 10;
printf("%d", sizeof(*double_ptr));
}
这个程序的输出是 8.
这是怎么发生的??
我的意思是 double_ptr 指向 4 字节内存,但输出仍然是 8 。
*其他 4 个字节从何而来???这个程序应该崩溃,因为其他 4 个字节没有分配给它。 *
请解释一下??
【问题讨论】:
-
旁注:当打印类型为
size_t的值时,您应该使用%zu。
标签: c void-pointers