【六】c语言程序设计-函数篇

 hello,大家好,我是霜淮子,阅读我的文章学习c语言,作者水平有限,如果发现错误的地方,欢迎大家在评论区留言,万分感谢!

欢迎订阅专栏《c语言程序设计》

目录

前言

6.1、函数的定义和使用

6.1.1、函数的定义和调用

6.1.2、从函数中返回

6.2、函数的参量和变数

6.2.1、函数原型

6.2.2、参数传递

6.2.3、本地变量

6.2.4、细节问题


前言

在软件开发与程序设计过程中,采用模块化的手段,将一个复杂的问题分解为若干个易于处理的子问题,将整个程序划分成若干个子程序模块,可以降低程序开发的难度,提高程序开发的效率

6.1、函数的定义和使用

6.1.1、函数的定义和调用

什么是函数?

函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或一个值。

函数定义

 调用函数

函数名(参数值)

  • ()起到了表示函数调用的重要作用。
  • 即使没有参数也需要()。
  • 如果有参数,则需要给出正确的数量和顺序。
  • 这些值会被按照顺序一次用来初始化函数中的参数。

6.1.2、从函数中返回

int max{int a,int b}{
int ret;
if(a>b){
	ret=a;
}else{
	ret=b;
}
return ret;
}
  •  return停止函数的执行,并送回一个值
  • retyrn;
  • return表达式;
  • 一个函数里可以出现多个return 语句。

从函数中返回值,我们用来:

  • 赋值给变量
  • 再传递给函数
  • 甚至可以丢弃

没有返回值的函数

  • void函数名(参数表)
  • 不能使用带值得return
  • 可以没有return
  • 调用得时候不能做返回值得赋值

6.2、函数的参量和变数

6.2.1、函数原型

用老告诉编译器这个函数长什么样

函数先后关系标题

#include<bits/stdc++.h>
using namespace std;
void sum(int begin,int end)//函数的原型声明 

int main(){
	
	sum(1,10);
	sum(20,30);
	sum(30,40);
	
	return 0;
}
void sum(int begin,int end){
	int i;
	int sum=0;
	for(i=begin;i<=end;i++){
		sum+=i;
	}
	printf("%d到%d的和是%d\n",begin,end,sum);
}

代码分析:

大家看,我们把sum函数移到后面之后,在开始的地方进行声明,声明之后的代码依然能成功实现。

声明不是函数,只是告诉编译器说:你看sum只是一个函数,它长成这个样子,有了声明之后,函数遇到sum的时候,他就知道该如何去执行。

函数原型

函数头,以;号结尾,就构成了函数的原型

6.2.2、参数传递

调用函数的时候,是用表达式的值来初始化函数的参数

调用函数

  • 如果函数有参数,调用函数时必须传递给他数量、类型正确的值
  • 可以传递给函数的值是表达式的结果,这包括:
  • 字面量
  • 变量
  • 函数的返回值
  • 计算的结果

类型不匹配?

  • 调用函数时给的值与参数的类型不匹配是c语言传统上最大的漏洞。
  • 编译器总是悄悄的替你把类型转化好,但是这很可能不是我们所期望的

传值

  • 每个函数都有字节的变量空间,参数也位于这个独立的空间中,和其他函数没有关系。
  • 过去,对于函数参数表中的参数,叫做”形式参数“,调用函数值时给的值,叫做”实际参数“。
  • 我们认为,它们时参数和值的关系。

6.2.3、本地变量

本地变量

  • 函数的每次运行,就产生了一个肚子的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量。
  • 定义在函数内部的变量就是本地变量。
  • 参数也是本地变量。

变量的生存期和作用域

  • 生存期:什么时候这个变量开始出现了,到什么时候它消亡了。
  • 作用域:在(代码内)什么范围内可以访问这个变量(这个变量可以发挥作用)。
  • 对于本地变量,这两个问题的答案是统一的:大括号内——块。

本地变量的规则

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

6.2.4、细节问题

1、函数原型里面一定要写参数,如果不确定的时候就把void放进去

void XXXX(void)

2、调用函数是的圆括号里的逗号是标点符号,不是运算符

f(a,b)和f((a,b))

后者表示要先做括号里面的逗号运算符

3、函数里的函数?

 c 语言不允许函数嵌套定义。

4、关于main

  • int main()_也是一个函数.(所以return是有意义的)
  • int main(void) 

-END-

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 您好,我是AI语言助手,以下是对您的回复: 20201022-成信大-c语言程序设计-20201学期《c语言程序设计b》是一门面向大学生的C语言程序设计课程,主要教授C语言的基础知识和编程技巧,包括数据类型、运算符、流程控制语句、函数、指针、数组、结构体等内容。通过本课程的学习,学生可以掌握C语言的基本语法和编程思想,高编程能力和解决问题的能力,为以后的编程学习和工作打下坚实的基础。 ### 回答2: 20201学期的《c语言程序设计b》是一个深入学习C语言的课程,教授的是C语言的高级应用。在本次课程,学生将会进一步学习C语言的语法、程序设计思路以及具体的编码实践。 首先,学生将会学习C语言函数、指针、结构体、联合体、枚举等高级概念。这些概念是C语言面向对象编程至关重要的概念,也是学生在日后编写复杂程序时所必须了解的内容。此外,在学习这些概念的同时,学生还将学习如何使用宏定义和预编译指令来进一步优化程序性能。 其次,学生将会进行具体的编码实践,包括基于C语言的数据结构设计和实现、字符串处理、文件操作、网络编程等等。这些项目和实践将会供给学生大量的机会来将所学的概念应用到具体的场景,帮助学生更深入地理解C语言的应用。 此外,学生还将参加课堂讨论、代码评审等活动,通过这些活动来高自己的编程能力、代码质量和团队协作能力。教师也将会给学生供详细的反馈,帮助他们改善自己的问题和高自己的能力。 总之,《c语言程序设计b》是一门非常重要的课程,对于学生日后从事计算机编程工作具有非常重要的意义。通过学习这门课程,学生将会大幅高自己的编程能力、透彻理解C语言并将其应用到实际工作。 ### 回答3: 成信大-20201学期《c语言程序设计b》是一门针对深入学习C语言的高级课程,内容涵盖了高级数据结构、算法设计、动态内存分配、文件操作等等。 在这门课程,学生将通过实践和理论学习,掌握C语言的高级编程技巧和策略。课程的重点之一是高级数据结构,包括链表、树、哈希表、图等等,学生将深入理解数据结构的实现和应用。 除此之外,课程还将涉及算法设计和分析,学生将学习如何设计出高效的算法,并进行时间和空间复杂度分析。动态内存分配和文件操作也是这门课程的重点,这些技术对于C语言程序设计来说非常重要。 学生在课程还将开展实践项目,以实现理论学习。通过项目实践,学生将在实际应用学到的技术,发现其存在的问题并解决。 总之,成信大-20201学期《c语言程序设计b》是一门非常高级的、面向深度学习的课程。通过系统学习和实践的方式,学生将深入掌握C语言的高级编程技巧。这门课程对于想要深入学习C语言的学生来说是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霜淮子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值