红联Linux门户
Linux帮助

为什么32机上的指针长度为8字节呢 ?

发布时间:2010-08-21 11:19:25来源:红联作者:vfdff
[code]#include

class base
{
public:
virtual void func(){printf("call base::func\n");};
};


int main()
{
void(base::*p)() = &base::func;

// 以下在32位机器上, GCC4.4.1 是 8
printf("sizeof( void(base::*p)()) %d\n" , sizeof(p) );
printf(" sizeof(class base) %d\n" , sizeof(class base) );

return 0;
}[/code]
文章评论

共有 13 条评论

  1. hml1006 于 2011-04-06 11:59:58发表:

    指针长度就是机器字长

  2. cuiweixie 于 2011-03-31 01:07:32发表:

    还是没人说为什么 。。。。。。。。。。。。。无语。。。。。。。。

  3. vfdff 于 2010-11-14 12:26:26发表:

    恩 ,C++ 本来就是兼容C的

  4. troy268 于 2010-11-11 08:28:55发表:

    运行得到普通指针的结果,然后相比较一下。

  5. vfdff 于 2010-09-05 01:04:35发表:

    普通的当然正常了,不过已经确认这个不正常是编译器的原因,而非CPU原因

  6. pl_014 于 2010-08-22 17:46:28发表:

    引用:
    7# pl_014


    我的意思是,这段程序也不是标准的C++程序。
    alick 发表于 2010-8-22 15:08


    对于这个问题的不同看法,实际上因为这个程序既有printf又有类,但c语言编译器一定不能认识这样的代码,而c++的标准输出是cout,对吧,但我想这样的代码也是可以被c++编译器和c++连接器所认识的,对吗

  7. alick 于 2010-08-22 15:08:11发表:

    7# pl_014


    我的意思是,这段程序也不是标准的C++程序。

  8. vfdff 于 2010-08-22 01:35:28发表:

    这个是什么语言这么重要吗?感觉大家跑题了

  9. pl_014 于 2010-08-21 18:23:46发表:

    引用:
    C哪来的class???
    看起来是C和C++的混合体~
    alick 发表于 2010-8-21 14:20

    事实上c和c++的混合体上不能被编译的,这段代码只能被理解为c++

  10. pl_014 于 2010-08-21 16:35:35发表:

    引用:

    可是这是C啊……
    绿色圣光 发表于 2010-8-21 12:41


    c里面怎么会有类啊

  11. alick 于 2010-08-21 14:20:54发表:

    C哪来的class???
    看起来是C和C++的混合体~

  12. 绿色圣光 于 2010-08-21 12:41:23发表:

    引用:
    不懂C++的路过
    shenhao0129 发表于 2010-8-21 12:31

    可是这是C啊……

  13. pl_014 于 2010-08-21 11:45:11发表:

    该不会是指向类的函数的指针长八位?试试普通指针。