Mike 发表于 2021-7-26 15:26:37

函数与指针

指针与函数
指针函数:
返回值为指针类型的函数
如:int * fun(int)
#include <stdio.h>
#include <stdlib.h>


#define M 3
#define N 3

int * find_num(int (*p),int num)
{
    if(num>M-1)
      return NULL;
    return *(p+num);
}

void main(int argc,char *argv[]){
    int i;
    int a={1,2,3,4,5,6,7,8,9};
    int *p=find_num(a,1);
    if(p !=NULL)
    {
      for(i=0;i<N;i++)
      {
            printf("%d ",p);
      }
      printf("\n");
    }
    else
      printf("can not find\n");

}
4 5 6 函数指针:
类型 (* 指针名) (形参列表)
如: int (*p)(int)
#include <stdio.h>
#include <stdlib.h>


int add(int a,int b)
{
    return a+b;
}


void main(int argc,char *argv[]){
    int a=3,b=5;
    int (*p)(int,int) ;
    p=add; //&add &可省略
    int ret;
    //ret=add(a,b);
    ret=p(a,b);

    printf("ret=%d\n",ret );

}函数指针数组
类型 (*数组名 [下标]) (形参)
如: int (*arr)(int)
#include <stdio.h>
#include <stdlib.h>


int add(int a,int b)
{
    return a+b;
}
int plus(int a,int b)
{
    return a-b;
}

void main(int argc,char *argv[]){
    int a=3,b=5;
    int i;
    int ret;

    int (*funp)(int ,int);
    funp=add;
    funp=plus;
    for(i=0;i<2;i++)
    {
      ret=funp(a,b);
      printf("ret=%d\n", ret);
    }

}指向指针函数的函数指针数组
int *(*funp)(int)


文档来源:51CTO技术博客https://blog.51cto.com/u_10182395/3181853
页: [1]
查看完整版本: 函数与指针