zhliao2

风雨兼程,一路向北-------fpga (Keep a quiet heart study)
指向函数的指针

看看注释部分,总是被这有无括号搞晕,所以现在只有强记了先,`(*∩_∩*)′

c = ( *p )( a, b );等价于c = max ( a, b );

# include <stdio.h>

int main ( void )
{
    int max ( int, int );
    int ( *p )( int, int );
    int a, b, c;
    p = max;       //这里的函数名代表的是该函数的入口地址
    scanf ( "%d, %d", &a, &b );
    c = ( *p )( a, b );  //注意了,这里*p两侧的括号不可以省略,表示p先与*号结合,是指针变量,然后再与后面的的()结合,表示此指针变量指向函数,如果写成int *p( int, int )则由于()的优先级高于*,它就成了声明一个p函数了(这个函数的返回值是指向整形变量的指针),
    printf ( "a = %d, b = %d, max = %d\n", a, b, c );
} 

int max ( int x, int y )
{
    int z;
    if ( x > y )
        z = x;
    else
        z = y;
    return z;

posted on 2012-07-15 11:13  zhliao  阅读(196)  评论(0)    收藏  举报