1. 指针与取地址的组合使用

问:char (*(*x[3])())[5],x是什么类型?
答:参考 http://topic.csdn.net/u/20120926/10/6b423fa9-e7c9-4584-b7b7-63607657e21d.html?54424

问:*(short *)&byte[0]是什么意思?
答:参考 http://topic.csdn.net/u/20120927/16/03b87825-0650-43c7-b3c1-ef955cfc863c.html?9294

2. 函数取地址

class A  
{
public:
    void f()
    {
        int f = 0;
    }
    void h()
    {
        int h = 0;
    }
    virtual void g() = 0;
};
int main()
{
    cout<<&A::f<<endl; // 输出结果:1
    cout<<&A::h<<endl; // 输出结果:1
    cout<<&A::g<<endl; // 输出结果:1
    return 0;
}

解释:代码中输出的不是函数的地址。事实上没有什么通用的方法可以得到成员函数的地址。cout不知道怎么输出成员函数的地址,于是将成员函数的地址转换为另一个类型(即bool型)输出。成员地址均非零,因此输出1。

results matching ""

    No results matching ""