【发布时间】:2012-11-23 12:57:52
【问题描述】:
我只是 C 编程的初学者。
我可以问一个简单的问题吗?
(int) sizeof(void *) 和 int 有什么区别?
例如)
#define ptrint int
#define PTRINT ((int) sizeof(void *))
【问题讨论】:
我只是 C 编程的初学者。
我可以问一个简单的问题吗?
(int) sizeof(void *) 和 int 有什么区别?
例如)
#define ptrint int
#define PTRINT ((int) sizeof(void *))
【问题讨论】:
第一种情况充当 int 的别名,因此您可以使用 ptrint 代替 int。
第二种情况是以字节为单位的指针大小。因此,例如在 32 位系统上,它将返回 4。
ptrint a = 8;
ptrint b = a;
int sizeofptr = PTRINT;
【讨论】:
一个是类型,另一个是返回类型大小的表达式。
【讨论】:
使用 ptrint,您只需定义一个新类型,它只是 int 的别名,例如:
ptrint a;
a = 5;
printf("%d",(int) a); // all this is ok.
使用 PTRIINT,您可以定义一个整数常量,该常量将包含系统上 void* 指针的大小。示例:
printf("Size of a void* pointer is %d\n",PTRINT); // will work.
PTRINT a; // will fail
【讨论】:
((int) sizeof(void *)) 是一个值(取决于您的系统和编译器实现),int 是一个类型。
【讨论】: