函数

  • 经过三个星期的慕课的学习大致上学会了C的一些基本知识,在经过三个星期的C语言课本实践将书上的例题,课后练习实践挨个做了一遍,终于到了函数这一章。时间过的好快呀。
  • 函数分为库函数和自定义函数;有返回值(
  • 和没有返回值
  • 变量有实参(全局变量)形参(局部变量)

函数设计

  • 一般某种功能使用超过三次以上,考虑将其写成函数
  • 函数的设计要遵循“信息隐藏”的指导思想即把函数有关的代码和数据对程序的其他部分隐藏起来。

基本原则

  1. 函数规模要小,尽量控制在50行代码以内,这样的函数比代码更长的函数更容易维护,出错几率更小。
  2. 函数功能要单一,不要设计有多种用途的函数
  3. 每个函数只有一个入口和一个出口,尽量不要使用全局变量向函数传递参数。
  4. 函数接口中要清楚的定义函数的行为,包括入口参数,出口参数,返回状态,异常处理等;让调用者清楚函数所能进行的操作及操作是否操作成功,应尽可能的多考虑一些可能出错的情况,定义好接口后不要轻易改动。
  5. 在函数入口处对参数的有效性进行检查。
  6. 在执行某些敏感性操作时(如除法,开方,取对数,赋值,函数参数传递等)尽可能多考虑一些出错情况,定义好函数接口后轻易不要改动。
  7. 不能认为调用一个函数总会成功,要考虑到一个函数调用失败后该如何处理。
  8. 对于与屏幕显示无关的函数,通常需要通过返回值来报告错误,因此调用函数时要检验函数的返回值,以判断函数是否调用成功;对于与屏幕显示有关的函数,函数要负责相应的错误处理。错误代码一般放在函数末尾,对于某些错误还要设计专门的错误处理函数。
  9. 由于并非所有的编译器都能捕获实参与形参不匹配的错误,所以程序设计人员在函数调用时应确保实参类型与形参类型相匹配,在程序开头进行函数原型声明,并将函数参数的类型书写完整(没有参数时用void声明)有助于编译器进行匹配检查
  10. 当函数需要返回值时,应确保函数所有分支都有返回值,函数没有返回值时用void声明

为了更深刻理解函数的返回值问题,今天写练习的时候,特意写了下面这个代码

#include <stdio.h>
#include <stdlib.h>
int pd_Ss(int n)
{
int i;
for(i=1;i<n;i++)
{
if(n%i==0)
{
return i; } } }
int main()
{
int m,result;
scanf("%d",&m);
result=pd_Ss(m);
printf("因子有%d",result); }
  • 事实证明函数的返回值只能有一个!

三目运算符

  • 在做数组这一章练习这一章练习题目的时候,我使用的是
int Average(int score[],int n)
{
int i;
int sum=0;
for(i=0;i<n;i++)
{
sum+=score[i];
}
if(n>0) return sum/n;
else return -1;
}
  • 书上参考代码
int Average(int score[],int n)
{
int i;
int sum=0;
for(i=0;i<n;i++)
{
sum+=score[i];
}
return n>0?sum/n:-1; }

-发现了三目运算符这个好东西,在网上寻找答案。找到一个比较好理解的解释:"(a<b)?a:b"是一个"条件表达式",它是这样执行的:如果a<b为真,则表达式取a值,否则取b值.

这相当于一个判断语句。

感想

  • 在这段时间的踏踏实实敲代码中,明确感受到了自己的不足和自己的进步,我并不喜欢抄书上的内容,但是这一部分有几点都是我容易错误的,感觉是一个非常重要的部分需要记录下来,在电脑上再敲一遍有助于理解和记忆,所以我将《C语言程序设计》(第三版)中的这一部分抄写下来。

假期C语言学习笔记4的更多相关文章

  1. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  2. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

  3. 2017-05-4-C语言学习笔记

    C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...

  4. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

  5. Haskell语言学习笔记(88)语言扩展(1)

    ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...

  6. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

  7. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  8. Go语言学习笔记十一: 切片(slice)

    Go语言学习笔记十一: 切片(slice) 切片这个概念我是从python语言中学到的,当时感觉这个东西真的比较好用.不像java语言写起来就比较繁琐.不过我觉得未来java语法也会支持的. 定义切片 ...

  9. Go语言学习笔记十: 结构体

    Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

随机推荐

  1. 枚举类型与位域枚举Enum

    一.概述 定义一个值类型,其中包含固定值集合.枚举类型变量可以是此集合中的任意一个或多个值.枚举使用enum关键字来声明,与类同级.枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符.枚 ...

  2. [转]solr系统query检索词特殊字符的处理

    原文地址:http://blog.csdn.net/wgw335363240/article/details/39889979 solr是基于 lucence开发的应用,如果query中带有非法字符串 ...

  3. Django中模型(四)

    Django中模型(四) 五.创建对象 1.目的 向数据库中添加数据.当创建对象时,Django不会对数据库进行读写操作,当调用save()方法时,才与数据库交互,将对象保存到数据库中 2.注意 __ ...

  4. [Python 多线程] 详解daemon属性值None,False,True的区别 (五)

    本文以多个例子介绍Python多线程中daemon属性值的区别. 回顾: 前面的文章简单介绍了在现代操作系统中,每一个进程都认为自己独占所有的计算机资源. 或者说线程就是独立的王国,进程间是相对独立的 ...

  5. list详解

    #include <iostream> #include <vector> #include <list> std::list<std::string> ...

  6. 谷歌浏览器linux,windows下载

    https://www.chromedownloads.net/ 提取码自己行提取rpm安装包

  7. SDN测量论文粗读(二)9.21

    Monocle: Dynamic,Fine-Grained Data Plane Monitoring 论文来源:CoNext 发表时间:2015 解决问题及所做贡献:Monocle:检测交换机中硬件 ...

  8. CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第三件事就是使用 TI-RTOS 创建 一个任务 和 使用 信号量 超时来闪烁 LED灯

    /* * data_process.c * * Created on: 2018年7月5日 * Author: admin */ #include <ti/sysbios/knl/Task.h& ...

  9. CCF认证201803-2 碰撞的小球 java代码实现。

    问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒. 当小球到达线 ...

  10. eclipse删除的文件如何恢复。

    1.如果不小心删除了单个文件或者文件夹. 鼠标点击上级目录 Ctrl+z就可以恢复了. 如果没有恢复,就右击项目,选择Resore from Local History 然后选择你所删除的文件,选择恢 ...