@
目录指针函数
指针函数就是指针型函数,该函数返回一个地址。
#include <stdio.h>
//指针函数*point_fuc()
int *point_fuc(int a,int b,int *sum)
{
*sum = a+b;
return sum;//返回sum的地址
}
int main(void)
{
int sum;
printf("一开始sum的地址和值:%p,%d\n",&sum,sum);
int *p = point_fuc(1,5,&sum);//用指针p指向sum的地址
printf("返回值后sum的值=%d,和sum的地址=%p\n",sum,&sum);
printf("用指针p来看返回值后sum的值=%d,和sum的地址=%p\n",*p,p);
return 0;
}
可以把该函数point_fuc()抽象成普通的指针point_fuc。在函数内部运行完函数内的代码并返回一个地址,则point_fuc()就相当于普通指针point_fuc取地址的样子。在上面代码里,可以抽象为普通指针时的样子:
指针函数:
int *point_fuc(int a,int b,int *sum)
{
*sum = a+b;
return sum;//返回sum的地址
}
int *p = point_fuc(1,5,&sum);//传給指针p的地址就是函数里return的
抽象成普通指针:
int *point_fuc;
int *p = point_fuc;//将指针point_fuc指向的地址传给指针p
函数指针
函数指针就是函数型指针。通过函数指针指向一个函数,然后就可以通过该指针传递参数给它所指向的函数,并返回值。
#include <stdio.h>
//普通函数one(int c,int d)
int one(int c,int d)
{
int sum;
sum = c+d;
return sum;
}
//普通函数mul(int c,int d)
int mul(int c,int d)
{
int multiplication;
multiplication = c*d;
}
int main(void)
{
//函数指针(*fuc_point)(int,int)
int (*fuc_point)(int,int);//创建函数指针fuc_point
fuc_point = one;//函数指针fuc_point指向one函数
int main_sum = fuc_point(15,25);//通过函数指针fuc_point给one函数传值
printf("main_sum=%d\n",main_sum);
fuc_point = mul;//将函数指针fuc_point转为指向mul函数
int multip = fuc_point(15,25);//通过函数指针fuc_point给mul函数传值
printf("multip=%d\n",multip);
return 0;
}
利用函数指针来传值给函数并返回值,相对于直接调用函数并返回值。
标签:函数,point,int,sum,C语言,fuc,函数指针,指针 From: https://www.cnblogs.com/denglongjiao/p/16650979.html