标签归档:指针

C语言关于函数指针的&和*

C89,调用函数指针,需要在函数指针前加*,对函数指针赋值,需要在函数名前面加&

C89,以后,对函数指针操作不需要& 和 *,但,使用它们是个好习惯

如下代码(C89函数指针风格)

#include <stdio.h>
#include <stdlib.h>
int max(int x, int y)
{
    return (x > y ? x :y);
}
int main ( int argc, char *argv[] )
{
    int (*p)(int,int) = &max;	// 这里&max
    int a, b, c;
    scanf("%d%d", &a, &b);
    c = (*p)(a,b);	// 这里(*p)
    printf("%d\n", c);
    return EXIT_SUCCESS;
} 

关于C++指针的引用

注意,只有指针的引用(*&)

没有引用的指针这么一说,引用的指针(&*)编译也是绝不可能通过的

指针的引用,代码如下:

#include <iostream>
using namespace std;
class A
{
public:
    int m_a;
};
void f(A * &a)
{
    cout << (a)->m_a << endl;
}
int main()
{
    A a;
    a.m_a = 88;
    A *p = &a;
    f(p);
    return 0;
}

分析的时候从右向左分析
f(A * &a)
先是 & , 表明这是一个引用
然后是 *
表明这是一个指向 A* 的引用