C中指针的大小

时间:2015-06-22 00:33:03

标签: c pointers sizeof

如何找到类型"指针的大小?" 例如,如果我想知道整数的大小,我可以使用" sizeof(int)"。指针的等价物是什么? 是否可以在不初始化指针的情况下执行此操作?

3 个答案:

答案 0 :(得分:4)

Network is unreachable 通常会产生体系结构指针的大小,尽管可能存在指向特定类型的指针较小的体系结构 - 因为sizeof(void*)可以保证允许对任何数据指针进行完整的往返(C99§6.3.2.3¶1),它应该肯定大于或等于所有其他数据指针。

指向函数的指针是一个完全不同的野兽,它可能需要比普通void *更多的空间(想想微控制器,其中代码和数据可能位于完全不同的地址空间中)。在这里你可以用void *之类的东西来了解情况,尽管IIRC没有阻止特定的实现为每个函数指针类型实现不同的大小,C99§6.3.2.3 ¶8要求函数指针必须经过任何其他函数指针类型的往返,所以我想使用任何函数指针类型探测函数指针大小是安全的,就像sizeof(void (*)())是一个很好的数据量度一样指针大小。

答案 1 :(得分:1)

尝试使用简单的无类型void pointer,如下所示:

size_t sz = sizeof(void *);

请注意,对于可以编译程序的所有体系结构,指针的大小(如整数的大小)都不相同。

答案 2 :(得分:0)

“指针”不是一种类型。它可以是一种类型的一部分。 “指向int的指针”将是一个类型的示例,您可以通过编写sizeof(int *)来找到它的大小。

不同类型的指针可能具有不同的大小,但在现代硬件上它们通常都是相同的。