函数指针的学习

在看了一下《C和指针》这本书的函数指针,发现自己对这些知识非常地陌生,哪怕自己大学两年都在学C/C++,但真的学习的不深入。

非常害怕泛而不精,出去找工作都可能没人要,所以下定决心这学期再忙也要花时间好好学习C/C++,把这门语言精通和吃透,毕竟不要在该奋斗的年纪选择了安逸。

       #include<stdio.h>//学习函数指针
int add(int a,int b)
{
return a + b; 

int main()
{
int x, y , z;
scanf("%d%d%d",&x,&y,&z);
printf("original function ans = %d!!\n",add(x,y)); 
int (*pf)( int,int) = &add;//函数指针,指向函数add的地址
printf("&add ans equals to %d!!\n",(*pf)(x,y)); 
//函数名被使用时总是由编译器把它转换成函数指针,add和&add其实是一样的 
int (*pf2)( int,int) = add;
printf("add ans equals to %d!!\n",(*pf2)(x,y)); 
//间接访问操作符并不是必需的,因为编译器需要的是一个函数指针 
int (*pf3)( int,int) = add;
printf("add ans equals to %d!!\n",pf3(x,y)); 
}

       代码运行结果是:

    

       也总算比较明白函数指针了。函数指针比较常用于回调函数,即在一个函数中调用另外一个函数,被调用函数则被当作参数传递过来。

      比如我们常用的为结构体进行sort,都要先写一个cmp,这个sort(a,a+n,cmp)其实也可以写成sort(a,a+n,&cmp).因为函数名被使用时总是由编译器把它转换成函数指针

     不过对于更高深的关于参数为void * 表示“一个指向未知类型的指针”的使用还不是很了解!先记录在此,望再接再厉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值