函数

关于模块化编程(C语言的程序模块称为函数),我们需要注意的几点。

1,没有子函数的概念。函数之间都是并列的关系,不能把一个函数定义到另一个函数的函数体中。

2,当定义在下面的函数,而上面代码已经调用了,此时需要函数原型的声明。如果函数定义在上面,而使用在下面,可以不用函数原型声明。

3,函数的返回值类型就是告诉编译器函数运算完成后,返回值的数据类型,当调用函数时,就可以定义相应类型的变量来接收函数的返回值了。当函数被调用时,形参比照类型,开辟空间用来接收实参的值。函数内部定义的变量叫做局部变量。是保存程序中间运算结果的。

4,每个函数都是独立的,在内存中,函数调时都会开辟一个栈帧,在一个函数体中,不能直接使用另外一个函数体中定义的变量,如果想要用到其它函数内定义的局部变量,只能用到参数传递。函数调用时产生栈帧,函数调用结束后,栈帧内存将释放(也就是所有的形参和局部变量分配的空间将全部释放)。

5,按数目一致,类型相同,顺序相同这样的原则进行函数调用,进行实参和形参的结合,正确的结合是函数调用的关键。

一、函数概述

函数定义:函数头+函数体

函数头: 说明函数的类型、名字、参数及参数的类型。如: int max( int x, int y )

函数体:  由“{ }”括起,包括变量声明和执行部分

分类: 标准库函数和用户定义的函数。

说明:(1)一个C程序可由一个主函数和若干个其他函数组成

(2) 程序执行时从main函数开始, 根据需要, main函数调用其他函数, 其他函数也可以互相调用。

(3)同一个函数可以被一个或多个函数调用任意多次。最后由main函数结束程序的运行。

(4)不能调用main函数

举例:用上面的设计原则,重新实现pmp程序,大于35 输出你好成熟,小于35 ,输出你好年轻。

#include

void welcome();//因为C语言是先声明再使用的语言,所以对函数原型先声明一下。

int ask();

void pmp(int age);

void main()

{

int age = 0;

welcome();     //函数调用,一串字母后面跟着小括号,然后还一个分号,我可以基本判断出来它是函数调用。

age = ask();     //询问年龄,需要得到年纪值,那么我需要定义个一个变量,保留这个值。

//ask()也是一个函数调用,它是把ask()返回的值赋值给age。

pmp(age);         //小括号里面是实际参数(实参),函数调用。

}

void welcome() //因为welcome,就是一个欢迎而已,所以我定义一个无参数,无返回值这样的函数原型。

{

printf("欢迎来蚂蚁软件学习\n");

printf("今天天气太好了。\n");

}

int ask()        //因为 ask(),实现问询年纪的功能,所以不需要提供参数,所以根据需求来讲,就应该设计成无参数。

//但需要问出来年纪值,所以函数可以设计一个带返回值的函数原型。

{

int age = 0;//函数内部定义的变量叫做局部变量。是保存程序中间运算结果的。

printf("您今年多大了?\n");  //因为每个函数都是独立的,在内存中,函数调用后都会开辟一个栈帧,所以此处age

scanf("%d",&age);               //和main 函数的age,是两个不同的存储单元,只是名字相同而已。

return age                          //在一个函数体中,不能直接只用另外一个函数体中定义的变量,如果想要用到其它函数

}                                                   //内定义的局部变量,需要用到参数传递。

//因为PMP函数,根据需求来讲,对于这个函数来讲,肯定需要一个年纪值,我才可以拍。所以,就需要设计

//一个形式参数了,返回值就是void,形式参数干什么用的呢?当函数被调用时,形参比照类型,开辟空间用来

//接收实参的值。

void pmp(int age)

{

if(age > 35)                   //形参的这个AGE可以取任何名字都可以,他仅仅是形参分配空间的名字而已。

{

printf("您好成熟啊");   //它属于被调用函数的变量。所以此处的AGE和main函数里面的AGE,是不同的内存块。

}

else            //这里仅仅名字相同而已。你也可以取不同的名字。

{

printf("您好年轻啊");

}

}

二、函数返回值

格式: return ( 表达式 ); return 表达式 ;

作用: 将表达式的值返回给调用函数 结束被调用函数的执行, 并把程序的控制返回到调用它的函数。

注意:(1)函数的返回值的类型应与函数的类型一致。如不一致, 以函数类型为准, 对返回值进行类型转换, 然后传送给调用函数。

(2)一个函数可以有多个return语句,  但只可能执行其中一个。

三 函数参数

正确地进行结合是函数调用的关键。结合时应注意:  实参与形参的个数相等,  顺序一致, 类型应相同。

1、实参与形参结合的原则是:

当实参为常量、变量、表达式或数组元素时,对应的形参只能是变量名。

当实参为数组名时, 所对应的形参必须是同类型的数组名或指针变量。

2、数组名作为函数参数

实参与形参之间的数据传递是地址传递。

可用多维数组名作实参和形参。在被调用函数中对形参数组定义时, 可以指定每一维的长度,也可省略第一维的长度。

四、函数原型

用户自定义函数在调用前, 必须对该函数进行声明。函数声明就是函数原型

返回值类型:决定函数运行的结果 接收数据时  数据类型要一致

函数名:功能

参数个数及类型

所有的数学库中的函数  返回值类型都是double,也可以传入整型 用整型变量接收结果

标签:函数,形参,age,函数调用,第七章,返回值,定义

来源: https://www.cnblogs.com/hyt19911004/p/12392412.html

ask函数有几个形式参数HTML,第七章 函数相关推荐

  1. c语言程序设计函数6,C语言程序设计》第6章函数-XiamenUniversity.PDF

    厦门大学非计算机专业本科生公共课 (2012-2013第2学期) <C语言程序设计> 第6章 函数 林子雨 厦门大学计算机科学系 E-mail: ziyulin@ 个人主页:/linziy ...

  2. c语言第七章函数笔记,我的C语学习笔记-C语言教程(七).doc

    我的C语学习笔记- C语言教程(七) C语言教程---第一章: C语言概论 C语言教程---第二章: 数据类型.运算符.表达式 C语言教程---第三章: C语言程序设计初步 C语言教程---第四章: ...

  3. c语言第七章函数实验总结,第六章 实验报告 (函数与宏定义)

    c语言实验报告 实验项目: 1.编写由三角形三边求面积的函数 2.编写求N的阶层 3.求两个整数的最大公约数 4.打印输出的指定图形 5.模块化程序设计 姓名:张顺利实验地点:第一教学楼514教室   ...

  4. C++学习之路(六),C++primer plus 第七章 函数--C++的编程模块

    第 7 章 函数---C++的编程模块 本章内容包括: 函数基本知识. 函数原型. 按值传递函数参数. 设计处理数组的函数. 使用 const 指针参数. 设计处理文本字符串的函数. 设计处理结构的函 ...

  5. Python3.5从0开始学读书笔记——第七章 函数

    调用函数 函数是指用于进行某种计算的一些列语句的有名称的组合.Python3内置了很多有用的函数,可以直接调用. 要调用一个函数,就要知道函数的名称和参数.参加官网帮助文档地址:https://doc ...

  6. c语言程序设计 第七章函数,《C语言程序设计》第七章随堂练习:自定义函数

    题目:创建一个C语言控制台程序,除了main函数外,自定义两个被调用的函数,并要求至少有一个函数包含有参数. 解答: 首先我们要了解,函数包含哪些组成结构,有四个部分,分别是:函数类型.函数名称.函数 ...

  7. python function at 0x00000_《fluent python》第七章 函数装饰器和闭包

    前言 函数装饰器用于在代码中"标记"函数,以某种方式增强函数的行为. 想理解与掌握这一功能必须先理解闭包:除此之外,闭包还是回调式异步编程和函数式编程风格的基础 装饰器 装饰器是可 ...

  8. c语言第七章函数选择答案,C语言选择题及答案

    C语言选择题及答案 21.执行下面的程序后,a的值为( ). main() { int a,b; for(a=1,b=1;a<=10;a++) { if(b%3==l) { b+=3; cont ...

  9. 【C++ primer】第七章 函数-C++的编程模块

    1,函数的基本知识        C++对于返回值的类型有一定的限制:不能是数组,但可以使其他任何类型,甚至可以使结构和对象.        有趣的是,虽然数组不可以作为返回对象,但是数组可以作为结构 ...

最新文章

  1. APP抓链接工具(Fiddler版)
  2. 比特币钱包(4) BIP39 助记词
  3. 数学建模——线性规划模型详解Python代码
  4. mysql中如何判断某个字段是纯数字
  5. cuba 平台_CUBA平台:TypeScript SDK和REST API
  6. 《Python Cookbook 3rd》笔记(1.20):合并多个字典或映射
  7. css 解析器 java_Java 的 CSS 解析器 jStyleParser
  8. 从进程组、会话、终端的概念深入理解守护进程
  9. python离散积分_科学网—python数据处理笔记(三)通道积分图 - 钱磊的博文
  10. Idea 格式化代码-配置
  11. 北大医学英语和计算机,医学英语专业本科生张泉同学在SSCI期刊发表论文
  12. 最新最全的云开发入门教程,微信小程序云开发,云函数,云数据库学习,微信小程序云开发扩展功能学习
  13. INFO Starting development server...98% after emitting CopyPlugin ERROR Failed to compile with
  14. C语言和win32绿色鼠标连点器,带代码(Windows)
  15. 计算机视觉算法——基于Anchor Free的目标检测网络总结
  16. 9个开源的 Vue3 组件库
  17. 关于一次美团java程序员招聘面试的经历
  18. Oracle重申将支持Solaris 11
  19. 文本编码格式转换及文本内容类型的介绍
  20. 嵌入式行业的发展前景?

热门文章

  1. 2022-2028中国等级5Ti-6Al-4V合计市场现状研究分析与发展前景预测报告
  2. Python爬虫入门教程 63-100 Python字体反爬之一,没办法,这个必须写,反爬第3篇...
  3. JS判断身份证(15位18位)的合法性
  4. Ubuntu_部分键盘F1~F12强制为功能键
  5. Android怎么自定义充电铃声,安卓手机自定义充电提示音教程
  6. android 视频大小压缩,Android视频压缩(亲测有效)方便简单易用
  7. 你眼中的罗振宇和罗辑思维?
  8. Android工程缺少SDK解决方案
  9. cisco(思科)两个不同网段相连接
  10. 西门子PLC和变频器控制恒压供水案例一控四