指针函数和函数指针的区别



区分这两者很简单,只要在它们中间加入一个的。指针函数则是指针的函数。函数指针就是函数的指针。重点都在后者。

所以指针函数是返回值为指针的函数,而函数指针则是指向函数的指针,可用来调用函数。

指针函数的语法定义:

                 类型* 函数名 (参数列表);

它一般用来返回全局变量、字符串常量或者static变量的地址。我们熟悉的strcpy、strcat它们就是返回指针,用来输出字符串常量。当你想要从其他函数返回一字符串的时候,这个时候你就可以用指针接收这个字符串的地址,然后在通过返回指针,来访问这字符串。。

例如:

char *test2(int num1){    
    char *str;

    if(num1) str="abc";

    else str="123";   
    return str;
}

int main(int argc, const char * argv[]) {
    printf("%s\n",test2(0));
    return 0;
}

在上面这道例题中,可以通过让num1的值为真为假,从而输出我们想要的字符串。而num1的真假,我们又可以把它看成是某个条件判断之后的值。

函数指针的语法定义:

                 返回值类型 (*指针变量)(参数列表);

它就是将指针指向函数的地址,然后利用这个指针来调用函数,因此就可以将函数作为参数使用了,实现函数的多次使用。

例:

int test(int num1,int num2){
    return num1>num2?num1:num2;
}

int main(int argc, const char * argv[]) {
    int (*p)(int,int)=test;
    int max=p(8,p(9,10));
    printf("%d\n",max);
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值