C语言笔记3--函数和程序结构

C语言笔记3--函数和程序结构


总论:

       函数可以把大的计算任务分解成若干个较小的任务,程序设计人员可以基于函数进一步构造程序,而不需要重新编写一些代码。

一个设计得当的函数可以把程序中不需要了解的具体操作细节隐藏起来,从而使整个程序结构更加清晰,并降低修改程序的难度。

C语言在设计中考虑了函数的高效性和易用性这两个因素。C程序一般都由许多小的函数组成,而不是由少量较大的函数组成。

一个程序可以保存在一个或者多个源文件中,各个文件可以单独编译,并可以与库中已编译过的函数一起加载。


程序可以看成是变量定义和函数的集合,函数之间的通信可以通过参数,函数返回值以及外部变量进行。

1.函数其实就是一段可以重复调用的、功能相对独立完整的程序段。

2.主函数可以调用其他函数,其他函数也可以互相调用。

3.一个C程序必须有一个且只能有一个main函数,无论main函数位于程序的什么位置,运行时都是从main函数开始执行的。

4.函数不能嵌套定义,也就是说一个函数不能从属于另一个函数。函数之间可以互相调用,但是任何函数不能调用main函数,main函数是被操作系统调用的。


一、函数的基本知识
1、函数的定义形式如下:
返回值类型 函数名(参数声明列表)
{
     声明;
     语句序列;
}

函数定义中的各构成部分都可以省略,最简单的函数如下:
func() /*该函数不执行任何操作也不返回任何值*/
{


}
注:C语言如果函数定义中省略了返回值类型,则默认为int 类型。

2、被调用函数通过return 语句向调用者返回值,如:
return 表达式;
return 语句的后面可以跟任何表达式;在必要时,表达式将被转换为函数的返回值类型;表达式两边通常加一对圆括号(圆括号可选的)。

3、调用函数可以忽略返回值,并且return 语句的后面也不一定需要表达式,当return 语句的后面没有表达式时,函数将不向调用者返回。

4、当被调用函数执行到最后的右花括号"}"而结束执行时,控制同样也会返回给调用者(不返回值)。


二、返回非整型值的函数

返回非整型值的函数,如:

double atof(char s[])
{
    /* TODO */
}

首先,由于atof 函数的返回值类型不是int , 因此该函数必须声明返回值的类型double,返回值的类型名应该放在函数名字之前。
其次,调用函数必须知道atof 函数返回的是非整型值,这一点也是很重要的。

然后,函数atof 的声明与定义必须一致。

int atoi(char s[])
{
     double atof(char s[]); /*函数声明*/

     return (int)atof(s);
}
其中,表达式的值在返回之前将被转换为函数的类型。因为函数atoi的返回值为int 类型,所以return 语句中的atof 函数的double 类型值将被自动转换为int 类型值。

但是这种操作可能会丢失信息,某些编译器可能会对此给出警告信息。

在该函数中,由于采用了类型转换的方法显示表明了所要执行的转换操作,因此可以防止有关的警告信息。


三、函数声明

函数声明的作用是把函数的返回值类型、函数名、函数参数的个数和类型等信息通知编译系统,以便在遇到函数调用时,编译系统能识别该函数并检查调用是否合法。

函数的声明方法:
(1)只说明函数的类型,这称为简单声明。int min() ;
(2)不仅说明函数的类型还要说明参数的个数和类型,这称为原型声明。

int min(int x,int y);

四、几种方式调用函数
(1)函数表达式

函数作为表达式中的一项出现在表达式中,以函数返回值参与表达式的运算。这时要求函数是有返回值的。

例如:y=sin(x);
(2)函数语句

函数调用的一般形式加上分号即构成函数语句。

例如:printf("%d",a);

这种方式通常只要求函数完成一定的操作,不要求函数带回值。

(3)函数实参

这种方式是函数作为另一个函数调用的实际参数出现,也就是把该函数的返回值作为实参进行数据传送,所以要求该函数必须是有返回值的。
 例如:printf("%d",max(a,b));

五、函数的分类:
(1)从用户角度看:库函数、用户自定义的函数
(2)从形式:无参函数、有参函数


注:数组名作函数参数时,形参数组和实参数组为同一数组,共同拥有一段内存空间。数组元素不能用作形参,

因为形参是在函数调用时临时分配内存存储单元的,不能为一个数组元素单独分配存储单元。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值