2021-03-19 C语言指针函数与函数指针

指针函数和函数指针

指针函数

指针函数为一个返回指针的函数,本质上是一个函数,该函数的返回值是一个指针。

int *function(char *s,int length)

即指针函数为返回一个int类型的指针,是一个地址。

指针函数的写法

 int * function(char *s,int length)
 int*  function(char *s,int length)
 int  *function (char *s,int length)

以上三种写法均无问题,看个人写法。
实例:

typedef struct
{
    int ni;
    float ui;
    int si[10];
}data;
//定义一个结构体data;
data *funsd(int a,float b)
{
  data *sp;
  sp=(data *)malloc(sizeof(data));
  sp->ni=a;
  sp->ui=b;
  return sp;
}
//返回data型指针的函数

data *mydata=funsd(187,58.66);//引用为定义一个mydata的结构体指针,其地址为函数的返回地址。
     printf("%d\r\n",mydata->ni);
     printf("%f\r\n",mydata->ui);

函数指针

函数指针的本质是一个指针,该指针指向这个函数。总的来说函数指针就是指向该函数的指针。

int*function)(char *s, int count)

函数指针需要一个函数把地址赋值给他。

function= &yy1;
function= yy1;

调用函数指针的方式

x=(*fun)(); //这种方式便于理解
x=fun();

例程:

int f1(int a,int b)
{

    return a+b;

}

int f2(int a,int b)
{

    return a*b;
}
 int (*fune)(int a,int b);//定义一个函数指针
  
  fune=&f2;//函数指针的地址为函数f2的地址。
           //fune=f1;也可以使用这种表达方式
  
printf("%d\r\n",(*fune)(99,45));//函数指针的调用。

两者区别

****指针函数:int* fun(int x,int y);
函数指针:int (*fun)(int x,int y);
可以简单粗暴的理解为,指针函数的*是属于数据类型的,而函数指针的星号是属于函数名的。
再简单一点,可以这样辨别两者:函数名带括号的就是函数指针,否则就是指针函数。****
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值