(int)sizeof(void *)和int之间有什么区别?

时间:2012-11-23 12:57:53

标签: c int sizeof void

我只是C编程的初学者。 我可以问一个简单的问题吗? (int) sizeof(void *)int之间有什么区别?

离)

#define ptrint          int
#define PTRINT          ((int) sizeof(void *))

4 个答案:

答案 0 :(得分:4)

第一个案例充当int的别名,因此您可以使用ptrint而不是int。

第二种情况是指针的大小(以字节为单位)。因此,例如在32位系统上,它将返回4。

ptrint a = 8;
ptrint b = a;

int sizeofptr = PTRINT;

答案 1 :(得分:3)

一个是类型,另一个是返回类型大小的表达式。

答案 2 :(得分:1)

使用ptrint,您只需定义一个只是int的别名的新类型,例如:

ptrint a;
a = 5;
printf("%d",(int) a); // all this is ok.

使用PTRINT,您可以定义一个整数常量,该常量将包含系统上void *指针的大小。例如:

printf("Size of a void* pointer is %d\n",PTRINT); // will work. 
PTRINT a;  // will fail

答案 3 :(得分:0)

((int)sizeof(void *))是一个值(取决于您的系统和编译器实现),int是一个类型。