zoukankan      html  css  js  c++  java
  • 函数

    分而治之的思想————>模块化编程

    把一个问题,分解为若干个简单的问题,提炼出公共任务,把不同的功能分解到不同的模块中
    复杂问题求解的基本方法,模块化编程的基本思想

    函数

    构成C语言的基本模块,模块化编程的最小单位

    C语言的逻辑结构

    一个C语言由多个源文件组成
    一个源文件有一个或者多个函数组成

    函数的分类

    • 标准库函数
    • ANSI/ISO
    • 自定义函数

    函数的定义

    //返回值类型 函数名 形式参数(parameter)简称形参,函数的入口;
    int GetMax(int x, int y) {
    
    	int result;
    	if (x > y)
    		result = x;
    	else 
    		result = y;
    	return result;
    }
    //函数体 使用定界符(花括号{})
    

    int result 为局部变量 只能能在函数内部使用,intx,int y 也是局部变量;

    如何将x,y的值返回给调用者?

    使用return语句:从函数返回一个值给调用者。
    函数的出口只能返回一个值,类型与返回值类型一致;
    可以使用多个return语句,一般在条件语句中使用
    return后无表达式或者没有return;
    在返回值类型处使用void表示无返回值,省略默认为int
    若在形参处省略不写,或者添加void,表示无参数,可以省略;

    使用函数编程的好处

    信息隐藏 无需知道内部如何运作,只了解与外部的接口即可,只要对外提供的接口不变,就不影响函数的使用,便于实现函数的复用和模块化编程

    函数调用的基本方式

    • 主调函数通过函数名调用被调函数;
    • 函数无返回值时,单独作为一个函数调用语句
    #include<stdio.h>
    int main()
    
    {
    	Displaying();
    	return 0;
    }
    void Displaying (void)
    {
    
    	printf("1.input");
    	printf("2.output");
    	printf("0.exit");
    	return;
    }
    
    • 调用者通过函数名调用函数
    • 有返回值时,可以放到一个赋值表达式语句中
    #include<stdio.h>
    int main()
    {
    	int a = 23, b = 24;
    	printf("%d\n",Average (a,b);
    	return 0;
    }
    int Average(int x, int y)
    {
    	int result;
    	result = (x + y) / 2;
    
    	return result;
    }
    
    • 还可以放到一个函数调用语句中,作为另外一个函数的参数

    函数定义时的参数,形式参数,简称形参
    函数调用时的参数,实际参数,简称实参;

    函数调用的过程:

    每次执行函数调用时:
    现场保护并为函数内部的局部变量分配内存
    把实参复制一份给形参,单项传值
    实参与形参的数目类型和顺序要一致;

    程序控制权交给被调函数,执行函数内的语句

    当执行到return语句时,从函数中退出

    从函数退出时

    根据函数调用栈中保存的返回地址,返回到本次函数调用的地方
    把函数值返回给主调函数,同时把控制权返回给调用者
    返回调用权之前,收回分配给函数内所有变量包括形参的内存(及释放

    main函数的特殊性

    最终返回到main函数中结束

    函数原型

    调用函数前先声明返回值类型,函数名,和形参类型
    有助于编译器函数参数类型的匹配检查

    为了将两个函数连接,需要加一条函数声明

  • 相关阅读:
    [牛客]十二桥问题 解题报告
    [NOIP2017 逛公园] 解题报告
    [JSOI2008]最小生成树计数 解题报告
    类欧几里得算法
    概率与期望题目列表
    [SCOI2008]配对 解题报告
    拦截导弹
    牛客网-约数的个数
    牛客网-成绩排名
    最大连续区间和的算法总结
  • 原文地址:https://www.cnblogs.com/Z1188G/p/13814060.html
Copyright © 2011-2022 走看看