Linux 基本语句_指针和函数

指针函数

顾名思义,即返回值为指针的函数
int * f (int n){
      int *p = NULL;//空指针
      return p;//返回一个地址
}

函数指针

指向函数的指针,每个函数都有自己的入口地址,函数指针专门指向这些地址
#include 

int max(int a, int b)
{
    return a > b ? a : b;
}

int main(void)
{
    int (*p)(int, int); //函数指针的定义
    //int (*p)();       //函数指针的另一种定义方式,不过不建议使用
    //int (*p)(int a, int b);   //也可以使用这种方式定义函数指针
    
    p = max;    //函数指针初始化

    int ret = p(10, 15);    //函数指针的调用
    //int ret = (*max)(10,15);
    //int ret = (*p)(10,15);
    //以上两种写法与第一种写法是等价的,不过建议使用第一种方式
    printf("max = %d \n", ret);
    return 0;
}

函数和数组在某些方面有些相似,如int a[ ] = {};中a是一个地址,而上述函数max也是一个地址

将指针函数和函数指针合体一下:

int *(*func)(int);//定义这样一个变量

上述语句就可以理解了,即其能指向一个函数,这个函数可以传入一个int类型的参数,其存储值本质上是这个函数返回值的地址(也就是说这个被指向的函数是一个指针函数)最朴素的讲,这个变量可指向指针函数

有点绕,看代码和输出效果如下:

#include


int* mm(int a){
	int *p = &a;
	return p;
}

int main(){
   int *(*p)(int);
   p = mm;
   int b = 0;
   printf("%d\n", *p(100));
   printf("%d\n", p(100));
   return 0;
} 

Linux 基本语句_指针和函数_第1张图片

你可能感兴趣的:(linux,运维,服务器)