本次作业,同学们开始学习函数。通过之前和同学们的沟通,似乎同学们在这里遇到的问题比较多。下面,我先帮同学们整理下函数的相关知识点。

什么是函数

首先,需要明确的是,什么是函数。所谓函数,也就是一段有名的代码段。大家可以考虑如下的函数:

void add(int a,int b){
int c = a + b;
}

在之前的学习中,大家当需要使用到两个数字相加这一功能,可能仅仅定义一个变量用于存储相加的值int c = a + b;

但是在使用中可能会发现,总是需要使用到两个数加和这一“算法”。那么,这一代码块如何能够复用呢。于是,便利用了函数。

但是,在上面的例子中虽然能够计算两个数的和,但是却无法知道它的结果。于是,就需要一个返回值(这仅仅是一种实现的手段)。

add函数变成了下面的样子:

int add (int a,int b){
int c = a + b;
return c; // 最终简化为 return a + b;
}

这样,便能够将计算得到的值传递出来。

上面的例子虽然很简单,但是已经包含了一个函数的所有需要的元素:返回值函数名参数函数体

函数的范围

之前,有同学问我“老师,return语句是不是代表一个函数的结束”。这里要强调的是,并不是。

C 语言的函数体是被大括号包围的。从{开始到}结束,才是整个函数体的范围。return语句仅仅是跳出函数,

后面的语句不再执行。但是不能因此就说return语句就是函数的结束。

函数返回数组的问题

C 语言本身并不能返回数组。但是可以返回指针(这个概念在后面将会学习到)。通过指针,便能够实现目标需求。

函数传递参数的问题

C 语言是一种强类型的语言。所谓强类型,就是将某一个数据声明为什么类型,在整个生存周期,就是什么数据类型。

除非进行强制类型转换或者是在运行过程中存在隐式类型转换。依旧以上面的add函数为例,传递入的两个参数都是int类型,

则传递的参数,也应该尽量都是int类型。否则可能会出现奇怪的错误。

函数的返回值的作用

虽然在上面的例子中,函数返回值的作用为返回传入的两个参数的加和。但是在实际的开发中,

更多情况下函数的返回值都是用于判断此函数的执行状态,或者是兼具执行状态的检查。另外,

当前写的 main 函数的返回值都习惯性的写为 return 0

实际上,在 GUI 以及一些其他的程序中,main 函数也会根据运行状态,提供不同的返回值。

虽然 main 函数不能被其他函数调用,但是这个值能够被操作系统捕获。操作系统根据此值,便能够确定程序的运行状态。

作业情况统计

作业抄袭情况

本次作业,看到至少3份作业,代码相同:

https://coding.net/u/gdcs16_410/p/chap5/git/blob/master/C6_2.cpp

https://coding.net/u/gdcs16_418/p/chap5/git/blob/master/C6-2.cpp

https://coding.net/u/gdcs16_419/p/chap6/git/blob/master/C6-2.cpp

C 语言学习 第六次作业总结的更多相关文章

  1. C语言程序设计第六次作业——循环结构(2)

    C语言程序设计第六次作业--循环结构(2) 之前的博客园图片没处理好,对大家说一声抱歉.希望大家能够多多指出我的错误,我来认真修改 ^ - ^ !. (1)改错题 序列求和:输入一个正实数eps,计算 ...

  2. C语言学习 第七次作业总结

    C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...

  3. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  4. C语言学习 第八次作业总结

    本次作业其实没有新的内容,主要就是复习上一次的一维数组的相关内容.冯老师布置了5道题目,其中涉及到一些比较简单的排序或者是查找的方法.因为数据很少,所以直接使用for循环遍历就可以了. 关于本次作业, ...

  5. C 语言学习 第12次作业总结

    作业总结 本次课堂的内容为字符串相关的几个函数还有结构体. 字符串相关函数 在此之前的课程中,输入主要都是使用scanf这个函数.而在这节课上,冯老师讲解了字符串获取函数gets.在不需要控制符的情况 ...

  6. C语言学习 第十一次作业总结

    作业总结 两次的作业,都是和指针有关.从第一次的作业开始,我就多次让同学们思考这个问题:为什么要用指针,为什么在函数的形参中要使用指针.如果能够想明白这2个问题,那么同学们应该会指针的了解就差不多足够 ...

  7. C 语言学习 第三次作业总结

    本次作业内容: For循环的使用 If判断语句的使用 常用数学运算表达式的使用 数学函数库中几个常见函数的使用及自我实现 将操作代码提交到coding 作业总结: For循环是C语言中一种基本的循环语 ...

  8. C语言学习第六章

    今天开始尝试改变! 今天要学习函数,一个C语言中的重要组成部分. 首先先聊聊为什么要使用函数?随着学习的深入很多人会发现某段的代码重复使用的几率很大,而如果用一次写一次的话很明显的效率就会比较低,如果 ...

  9. C 语言学习 第五次作业总结

    第五次作业,主要学习和复习的是几种循环结构的使用. 在前一次的课堂上,同学们已经学习了分支语句的使用.分支语句和循环语句配合使用,就可以写出更多的,逻辑功能丰富的代码了. 逻辑功能的丰富,也意味着学习 ...

随机推荐

  1. APNS 远程推送通知 PUSH deviceToken

    服务器向客户端推送消息:      当应用程序推到后台,或者根本就没有运行(我们的代码无能为力)      如果这种情况之下,应用程序想和用户交互(传统的做法 不可能)      推送 APNS:Ap ...

  2. Ionic2系列——Ionic 2 Guide 官方文档中文版

    最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情确实比较费精力,不知道什么时 ...

  3. Entity Framework 教程——安装Entity Framework环境

    安装Entity Framework环境 Entity Framework 5.0 API分布在两个地方,一个可在NuGet包管理器中找到,一个存在于.NET framework中..NET fram ...

  4. 智能指针unique_ptr的用法

    unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法: std::unique_pt ...

  5. java web学习总结(二十三) -------------------编写自己的JDBC框架

    一.元数据介绍 元数据指的是"数据库"."表"."列"的定义信息. 1.1.DataBaseMetaData元数据 Connection.g ...

  6. [转载]C#深入分析委托与事件

    原文出处: 作者:风尘浪子 原文链接:http://www.cnblogs.com/leslies2/archive/2012/03/22/2389318.html 同类链接:http://www.c ...

  7. js sort() reverse()

    数组中存在的两个方法:sort()和reverse() 直接用sort(),如下: ,,,,,,,,,,,]; console.log(array.sort());ps:[0, 1, 2, 2, 29 ...

  8. DevExpress免费公开课,讲解即将发布的16.2新版功能

    先报名后听课,开课时间12月底 报名地址:http://training.evget.com/open/detail/5115[适合人群]覆盖全领域,尤其适合课程适用人群:软件开发人员.企业中的数据分 ...

  9. Android Weekly Notes Issue #227

    Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...

  10. emoji哈哈哈哈

    Unicode 官网上的FAQ令人发笑,啊哈哈哈 Q: What are the most popular emoji characters? Q: Do emoji characters have ...