我刚看了一下谭浩强先生写的《C程序设计》关于函数这一章,确实有返回指针值的函数,但它的定义形式是这样的:例如: float  * search(int x int y); 即:类型标识符   * 函数名(参数表),这种定义与MFC中的定义还是有很大区别的,MFC:  OnDraw(CDC* pDC) 函数名前面没有“*”号 也没有函数返回值类型 ,所以还是不一样的。这是为什么呢?难道C++ 中的函数定义和C存在很大差别吗? 在C++中如何写返回值为指针的函数?它的标准定义是什么样的?(  类似于C语言:类型标识符   * 函数名(参数表)的对应形式,C++应当是什么样子的?   )

解决方案 »

  1.   

    Q1. MFC:  OnDraw(CDC* pDC) 函数名前面没有“*”号 也没有函数返回值类型 ,所以还是不一样的。这是为什么呢?
    A1. 楼主看错了,完整的 OnDraw 的定义是这样的
    void CxxxxView::OnDraw(CDC* pDC)
    {
    ......
    }
    该函数的返回值是 void 的,这与 C 还是一样的.
    Q2. 难道C++ 中的函数定义和C存在很大差别吗? 
    A2. 如果定义普通函数,是一样的;若是定义成员函数,是不一样的.C 没有成员函数,C++ 有成员函数,比如上面的 OnDraw 就是成员函数.Q3. 在C++中如何写返回值为指针的函数?
    A3. 对于普通函数,应该这样写:
        类型 * 函数名(参数列表)
        对于成员函数,应该这样写:
        类型 * 类名::函数名(参数列表)Q4. 它的标准定义是什么样的?(  类似于C语言:类型标识符   * 函数名(参数表)的对应形式,C++应当是什么样子的?   ) 
    A4. 见 A3