我只是C编程的初学者。
我可以问一个简单的问题吗?
(int) sizeof(void *)
和int
之间有什么区别?
离)
#define ptrint int
#define PTRINT ((int) sizeof(void *))
答案 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是一个类型。