08_函数

 

指针参数

  返回值是指针

 

一、指针作参数形式的函数

  //计算x的平方 x*x

   void square(int *x)

   {

     int a=*x;

     *x=a*a; 

   }

二、指针作返回值的函数

  int *square(int *x)

   {

     int a=*x;

     *x=a*a;

     return x;

   }

 

三、慎用自动变量返回指针

 int* square3(int *x)

 {

         int a=*x * *x;

         return &a; //危险 用自动变量

 }

 

函数指针和指针函数

一、函数指针概念

      函数的地址存放了函数开始执行的位置(起始地址),存放在函数指针中的内容就是这个地址。

    不过,光有地址还不够,如果用函数指针来调用函数,还得知道函数返回值和参数的类型及个数。

二、函数指针的定义(声明)

   返回类型 (*指针名)(参数类型)

   int (*pn)(int,int);

三、函数指针数组

 返回类型 (*指针名[n])(参数类型)

 int (*pn[2])(int,int);

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <ctype.h>

 

 int add(int a,int b,int d)

 {

          return a+b+d;

 }

 int mul(int a,int b,int c)

 {

          return a*b*c;

 }

int main(void)

{  

   int (*pn[2])(int,int,int);

  pn[0]=add;

  pn[1]=mul;

 

  printf("%d\n", pn[0](1,3,7) );

  printf("%d\n", pn[1](8,3,2) );

 

 

         getchar();

         getchar();

         return 0;

}
View Code

 

 

 

   

posted @ 2020-05-18 22:17  岁月荏苒¥我心依旧  阅读(103)  评论(0编辑  收藏  举报