c - 指针大小相同吗?

标签 c pointers

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/

相关文章:

c - C中的返回结构指针

c - 无符号整数的差异 - 获得签名结果的标准支持方式?

c - 当我更改 numberOfTerms 时,为什么我的代码不准确?

c - 强制 scanf ("") 只接收数字 0-7

C:字符串、数组和指针?阵列故障?

c - 在 C 中以二维数组作为参数的函数头中应该使用什么语法

c - 链表行为 - 帮助我理解

c - 内存分配如何在不显式分配的情况下为 char* 工作

不能和可以更新字符串指针变量

C 计算一串数字中出现次数最多的数字