首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >sizeof(某个指针)总是等于4吗?

sizeof(某个指针)总是等于4吗?
EN

Stack Overflow用户
提问于 2008-12-29 23:03:23
回答 15查看 135.5K关注 0票数 243

例如:sizeof(char*)返回4。int*long long*以及我尝试过的所有内容也是如此。这有什么例外吗?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2008-12-29 23:11:16

你得到的保证是sizeof(char) == 1。没有其他保证,包括不保证sizeof(int *) == sizeof(double *)

在实践中,16位系统上的指针大小为2(如果可以找到的话),32位系统上的指针大小为4,64位系统上的指针大小为8,但是依赖于给定的大小没有任何好处。

票数 207
EN

Stack Overflow用户

发布于 2009-01-13 22:53:17

即使在普通的x86 32位平台上,您也可以获得各种指针大小,请尝试以下示例:

struct A {};

struct B : virtual public A {};

struct C {};

struct D : public A, public C {};

int main()
{
    cout << "A:" << sizeof(void (A::*)()) << endl;
    cout << "B:" << sizeof(void (B::*)()) << endl;
    cout << "D:" << sizeof(void (D::*)()) << endl;
}

在Visual C++ 2008下,成员函数指针的大小分别为4、12和8。

Raymond Chen谈到了这个here

票数 38
EN

Stack Overflow用户

发布于 2008-12-29 23:04:24

如果你是为64位机器编译,那么它可能是8。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/399003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档