2010-04-29 98 views
2
printf("pointer: %d\n", sizeof(*void)); 

由于*,此行会导致语法错误。我该怎么做才能使它起作用?查找指针的大小

+6

请注意,您应该使用'“%zu”'来打印'size_t'类型(即'sizeof'返回的值)而不是'“%d”'。这是一个迂腐的差异,但你不想看到一个-3元素的数组,你会吗? – 2010-04-29 10:37:10

回答

9

您正在试图找出地址为void的大小。如果您正在寻找无效指针的大小,请尝试:sizeof(void *)。

printf("pointer: %zu\n", sizeof(void*)); 

应该做你想做的。使用%zu而不是%d作为指针是无符号值而不是小数。

编辑:我第一次想到的其他东西,是%zu编译器的依赖吗?我们是否需要在32位或64位架构上做不同的事情?

6
printf("pointer: %d\n", sizeof(void*));