如何使用函数及函数的注意事项

简介: 目录什么是函数?如何调用函数?函数的先后关系?函数的变量空间?什么是函数?首先我们来说一说函数的作用,就是一块简单的代码接受零个或多个参数,做一件事情,并返回零个或一个值void sum(int a,int b){int i;int sum=0;for(i=a:i<=b;i++){sum+=i;} printf("%d到%d的和是%d\n",a,b,sum);}现在我们就写出了一个简单的求和函数和数学中的y=f(x)很像 函数名 sum 返回类型 void 参数表 int a,int b 函数体 大括号里的所有东西 函数头 大括号前

目录

什么是函数?

如何调用函数?

函数的先后关系?

函数的变量空间?


什么是函数?

首先我们来说一说函数的作用,就是一块简单的代码接受零个或多个参数,做一件事情,并返回零个或一个值

voidsum(inta,intb)
{
inti;
intsum=0;
for(i=a:i<=b;i++)
{
sum+=i;
}
printf("%d到%d的和是%d\n",a,b,sum);
}

现在我们就写出了一个简单的求和函数和数学中的y=f(x)很像


函数名 sum  

返回类型 void  

参数表 int a,int b  

函数体 大括号里的所有东西  

函数头 大括号前的东西  

这样在代码段中我们就可以用sum()代替这段代码避免重复写相同的代码增加代码质量。


如何调用函数?

第二 现在我们已经创建了一个函数那我们应该怎么去使用调用这个函数呢?


首先呢你肯定要给这个函数起一个名字 命名形式为  函数名(参数值);括号起到了调用函数的重要作用 即使不用输入参数也要这个括号  有参数那么则需要给出正确的数量和顺序 这些值会用来初始化函数中的参数  好了 现在我们已经可以使用这个函数来计算了 现在我们需要得到这个值 这也就和上表中的返回类型有关了 我们说两种简单的 一:int double 这类的它是可以返回值的 二void 这种则相反 说明一下啊返回值通俗的来讲就是得到值并用来赋值计算什么的   return 是老熟人了 作用是停止函数的执行 并送回一个值  两种写法 return; return 表达式;表达式可以是变量那就代表返回的是这个变量的值  void是没有返回值的所以不用return  而上述代码中我们是不能吧sum的值交给其他东西 因为用的是void


下面我们用一段代码来直观的表示

#include <stdio.h>intmax(inta,intb)
{
intret;
if(a>b){
ret=a;
}else{
ret=b;
} 
returnret;
}
intmain(){
inta,b,c;
a=5;
b=6;
c=max(10,12);
c=max(a,b);
c=max(c,23);
c=max(max(c,a),5);
printf("%d\n",max(a,b));
return0;}

函数的先后关系?

假如我们把一个函数命名为sum() 我们就要把sum()写在上面这和c语言的编译器有关它是自上而下的分析这个代码 再看见sum(1,10)的时候它需要知道这个函数的基本信息 这个信息就是函数的参数 数量 每个参数的类型  返回类型是什么 一定要把sum()写在下面的话 为了让编译器可以看懂我们就需要声明一下让编译器知道这个函数的大致情况在上面加一个函数原型(函数原型就是函数头加一个分号)不声明的话编译器就回去猜函数的类型这就会导致出错


类型匹配?

如果函数有参数那么调用函数时必须传递给他数量,类型正确的值


类型不匹配在c语言中问题不是很大 编译器是个好人会悄悄帮你把类型替换好,就是这个类型可能不是你所期望的


函数可以简化你的代码 也就是避免一些重复的代码 那么随着一次又一次的传递  变量可以传递交换吗?答案是不可以 调用函数时,永远只能传只给函数


函数的变量空间和生命周期

每个函数都有自己的变量空间,参数也位于这个独立的空间中,这个空间我们叫做块。和其他函数没有关系。

本地变量是定义在块内的它可以定义在函数的块内也可以定义在语句的块内甚至可以随便哪一个大括号来定义变量程序运行进入这个块前,其中的变量不存在,离开这个块,其中的变量就消失了块外面定义的变量在里面仍然有效块里面定义的变量和外面同名则掩盖了外面的不能在同一个块里定义同一个变量本地变量不会被默认初始化参数在进入的时候就被初始化了


目录
打赏
0
0
0
0
108
分享
相关文章
阿里云函数计算(Function Compute):快速高效的事件驱动计算
阿里云函数计算(Function Compute)是一种事件驱动计算服务,能够在阿里云上运行代码,且只按照实际使用时间付费。它无需管理服务器和基础架构,并可以与其他阿里云产品以及第三方服务集成,为用户提供了快速、高效、低成本、弹性的云计算能力。
【C++】STL 算法汇总
C++ 标准模板库 Standard Template Library 算法汇总
216 1
initializer 接口的价值
initializer 接口的价值自制脑图
143 0
initializer 接口的价值
自定义方法 模拟高并发场景,对方法进行测试
自定义方法 模拟高并发场景,对方法进行测试
159 0
苹果下微信浏览器返回上一页不刷新问题解决方案
苹果下微信浏览器返回上一页不刷新问题解决方案
420 0
[算法总结] 17 题! BAT面试涉及的链表题都在这里了
本文首发于我的个人博客:尾尾部落 链表是面试过程中经常被问到的,这里把剑指offer 和 LeetCode 中的相关题目做一个汇总,方便复习。 1. 在 O(1) 时间删除链表节点 题目描述:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。
1636 0
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问