C语言指针与函数的关系

一:

函数和指针关系:

    1)指向函数的指针

   2)指针作为函数的参数

      int max(int *p1,int *p2){

      }

     1)实参可以是一个指针

     2)也可以是一个和形参类型相同的数组的数组名 

   3)返回值是指针的函数: 

      指针函数

      char* 函数名(){

        return 地址

      }

       //返回值是一个字符串指针

      char * test(){

           return "xxxx";

      }

      char * test2(){

        char ch='a';

        return &ch;

     }

二: 函数的指针:

   1) 指向函数的指针

    函数在内存中都会划分一块独立的内存区域,函数名代表了函数的内存首地址

    代表内存首地址:数组名  变量名    函数名    结构体名

   2) 函数指针:

          用来存放函数地址的指针变量

    格式:

          int max(int x,int y){

            return x>y?x:y;

          }

          int sum(int x,int y){         

               return x+y;

          }

          int * getMax(int x,int y){

               return x>y?&x:&y;

          }

        声明的格式

          int max(int x,int y);

          通过声明推出函数指针  

             返回值类型  (*指针变量名)(函数的参数);

          //定义了一个函数指针变量p,p可以指向所有返回值是int,

          //有两个整形参数的 函数

          int (*p)(int x,int y);

        注意:定义函数指针的时候,可以不指定形参变量名,但是类型不能省略

               int (*p1)(int,int); 

    3)函数指针的使用

       (1)给函数指针初始化

          int (*p)(int x,int y);

          //用函数名初始化 函数指针

          p = sum;

      (2)用指针变量调用函数

          p(4,5);

      优点:让函数的调用更灵活

OC中得block中指向block的指针与函数指针非常像  

原文地址:https://www.cnblogs.com/-boy/p/4051016.html