Possible Duplicates:
Are there are any platforms where pointers to different types have different sizes?
are all data pointers of the same size in one platform?
sizeof(Bucket *)
与 sizeof(int *)
相同,对吗?
顺便说一句,是char arr[];
在 c90 中有效吗?
最佳答案
我相信没有要求指针的大小都相同。唯一的要求是所有对象指针都可以存储在 void *
中,当转换为 void *
并返回时它们将是相同的,并且所有函数指针,如果转换为另一种类型的函数指针并再次返回,将是相同的。 (将函数指针强制转换为 void *
不能保证有效。如果我另有说明,抱歉。)
在实践中,我认为您唯一会发现不同大小的指针的情况是您关心 C++ 的成员函数指针,或者您正在研究更晦涩的架构。
在 C90 中,char arr[];
是预先声明待定长度的全局数组的有效方法。请注意,char arr[]
是一个不完整类型,因此您必须先声明它,然后才能使用sizeof
。像 C99 中那样创建灵活的数组成员是无效的。
关于c - 指针大小相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192578/