• 第六次课大纲


       在学习函数定义时,大家知道一个函数分为函数头和函数体,其中函数头包括返回值、函数名和参数表,那指针与函数是什么关系?

    void sum(int a,int b);//void 是返回值,sum是函数名,int a和int b是函数参数
    

    指针可替代函数头中的每一部分,也就是指针与函数有三重关系:指针作为函数参数,指针作为函数返回值,指向函数的指针。

      一、指针作为函数参数

      在第三节课里说过,指针的主要用途就是作为函数参数,当函数参数为普通变量时,函数参数的传递是值传递,而当函数参数是指针时,依然是值传递,只是这时的值是地址,通过地址可以访问到函数外的变量的值,有些书上也称指针作为函数参数为双向传递。具体例子可参考第三节课大纲。

      二、指针作为函数返回值

      函数的返回值可以是整形的,也可以是double等,那么也可以是指针类型的。如果函数返回一个int类型数据,那么返回值写为int就可以,相应的如果返回一个int类型的指针,返回值则是int *类型。

    int i;
    int sum(int a);    返回整型类型
    
    int *p;
    int *sum(int a);   返回指针类型
    

      举例说明,以指针返回值的形式输出两个数中比较大的值,通过整形数据可以将最大值返回给main,也可以通过指针返回回来:

     1 #include<stdio.h> 
     2 int *max(int *p1,int *p2){
     3     int *r;
     4     if(*p1>*p2) r=p1;
     5     else r=p2;
     6     
     7     return r;
     8 }
     9 
    10 int main(){
    11     int a,b,*p;
    12     printf("input a and b:
    ");
    13     scanf("%d,%d",&a,&b);
    14     p=max(&a,&b);
    15     printf("max=%d",*p);
    16     
    17     return 0;
    18     
    19 }
    View Code

      三、函数指针

      编辑器对程序进行编译时,会为每个函数分配一片连续的内存空间,例如下图的main函数和swap函数,函数所在内存空间的首地址就是函数的入口地址:

    那么这个入口地址也可以存放在一个指针类型的变量中,也就是使用一个指针变量指向该函数。然后像数组一样,该指针变量代替函数名来代替这个函数,指向函数的指针称为函数指针。函数指针的定义方式如下:

    类型说明符 (*变量名)()
    例如:int (*p)(char a);  //定义了一个指向函数的指针变量p,函数的返回值是int,函数参数是char a。  

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     由于外出培训,找其他老师代课,第六次课主要讲授了指针和二维数组、作为函数返回值的指针。指向函数的指针作为自学内容。

  • 相关阅读:
    [原创]如何在Windows下安装Bugfree2.0.0.1
    [原创]网站性能优化利器之一"google page speed"
    [原创]下一代Web 应用程序安全性测试工具HP WebInspect简介
    [原创]微软软件项目管理Team Foundation Server之测试人员
    [原创]Yeepay网站安全测试漏洞之跨站脚本注入
    [原创]软件测试过程改进的内容和注意事项
    [原创]快钱99bill网站安全性测试漏洞之“跨站式脚本注入”
    马化腾内部讲座:让产品自己召唤人
    [转贴]可用性测试
    [原创]浅谈缺陷分析的意义和方法
  • 原文地址:https://www.cnblogs.com/c-programing-language/p/6545430.html
Copyright © 2020-2023  润新知