潭州网络学院吧 关注:146贴子:297
  • 0回复贴,共1

C语言知识点(7)

只看楼主收藏回复

第7章 函数
7.1 库函数
 C语言提供了丰富的库函数,这些函数包括了常用的数学函数,如求正弦什的sin函数,求平方根什的sqrt函数;包括了对字符和字符串进行处理的函数;包括了进行输入输出处理的各种函数;……。读者应该学会正确调用这些已有的库函数,而不必自己编写。本书的附录8列出了常用的库函数,供读者查阅。
  1.调用C语言标准库函数时要求的include命令行
  2.标准库函数的调用
  对库函数的一般调用形式为:函数名(参数表)
7.2 函数的定义和返回值
7.2.1 函数定义的语法
 函数定义的语法 (1)C语言函数定义的一般形式(2)函数名和形式参数都是由用户命名的标识符。在同一程序中,函数名必须唯一,形式参数名只要在同一函数中唯一即可,可以与其他函数中的变量同名。(3)C语言规定,不能在函数的内部定义函数。(4)若在函数的首部省略了函数返回值的类型名,把函数首部写成:函数名(类型名 形式参数1,类型名 形式参数2,……)则默认函数返回值的类型为int类型。 (5)除了返回值类型为int类型的函数外,函数必须先定义(或说明)后调用。 (6)若函数只是用于完成某些操作,没有函数值返回,则必须把函数定义成void类型。
7.2.2 函数的返回值
 函数的值通过return语句返回,return语句的形式如下:return表达式; 或 return(表达式);也就是说,return语句中的表达式的值就是所求的函数值,此表达式值的类型必须与函数首部所说明的类型一致。若类型不一致,则以函数值的类型为准,由系统自动进行转换。
  当程序执行到return语句时,程序的流程就返回到调用该函数的地方(通常称为退出调用函数),并带回函数值。在同一个函数内,可以根据需要,在多处出现return语句,在函数体的不同部位退出函数。但无论函数体中有多少个return语句,return语句只可能执行一次。
  return语句中也可以不含表达式,这时必须定义函数为void类型,它的作用只是使流程返回到调用函数,并没有确定的函数值。
  函数体内可以没有return语句,这时也必须定义函数为void类型,程序的流程就一直执行到函数末尾的“}”,然后返回调用函数,也没有确定的函数值带回。
7.3 函数的调用
7.3.1 函数调用时的语法要求
函数的两种调用方式函数的一般调用形式为:
函数名(实在参数表)
实在参数(简称实参)的个数多于一个时,各实在参数之间用逗号隔开。实参的个数必须与所调函数中的形参相同,类型一一对应匹配。若函数无形参,调用形式为:
函数名()
函数名后的一对圆括号不可少。
一般情况下,可用两种方式调用函数;
(1)当所调用的函数用于求出某个什时,函数的调用可作为表达式出现在允许表达式出现的任何地方。例如对于前面的add函数,可用以下语句调用该函数求出3.0与4.0的和值,然后赋给y:
y=add(3.0,4.0);
也可以通过以下的语句段调用add函数求出1+2+3+4+5;
for(y=0,i=1;i<=5;i++) y=add(y,i);
函数也可以出现在if 语句中作为进行判断的表达式:
if(add(x,y)>0)…
(2)C语言中的函数可以仅进行某些操作而不返回函数值,这时函数的调用可作为一条独立的语句。如:
函数名(实在参数表);
↑注意:最后有一个分号
例如:dummy();。
7.3.2 函数的两种调用方式
 函数调用时的语法要求函数调用时有下列语法要求:
  (1)调用函数时,函数名必须与所调用的函数名字完全一致。
  (2)实在参数的个数必须与形式参数的个数一致。实参可以是表达式,在类型上应按位置与形参一一对应匹配。如果类型不匹配,c编译程序按赋值兼容的规则进行转换。若实参和形参的类型不赋值兼容,通常并不给出出错信息,且程序仍然执行,只是不会得到正确的结果。  因此应该特别注意实参和形参的类型匹配。
  (3)C语言规定:函数必须先定义,后调用(函数的返回值类型为int或char时除外)。
7.4 函数的说明
7.4.1 函数说明的形式
在c语言中,除了主函数外,对于用户定义的函数遵循“先定义,后使用”的规则。凡是未在调用前定义的函数,c编译程序都默认函数的返回值为int类型。对于返回值为其他类型的函数,若把函数的定义放在调用之后,应该在调用之前对函数进行说明(或称为函数原型说明),函数说明的一般形式如下:
  类型名函数名(参数类型l,参数类型2,……)如double add(double,double)。也可采用下面的形式:类型名 函数名(参数类型l参数名1,参数类型2参数名2,……)
  如double add(double P,double q)。此处的参数名完全是虚设的,它们可以是任意的用户标识符,既不必与函数首部中的形参名一致,又可以与程序中的任意用户标识符同名,实际上,参数名可以省略。函数说明语句中的类型名必须与函数返回值的类型一致。
  函数说明可以是一条独立的说明语句,如:double add(double,double);
  也可以与普通变量一起出现在同一个类型定义语句中,如:
  double X,Y,add(double,double);
  对函数进行说明能使c语言的编译程序在编译时进行有效的类型检查。当调用函数时,若实参的类型与形参的类型不能赋值兼容而进行非法转换时,c编译程序将会发现错误并报错;当实参的个数与形参的个数不同时,编译程序也将报错。使用函数说明能及时通知程序员出错的位置,从而保证了程序能正确运行。
7.4.2 函数说明的位置
当在所有函数的外部、被调用之前说明函数时,在对函数进行说明的语句后面所有位置上都可以对该函数进行调用。
  函数说明也可以放在调用函数内的说明部分,如在main函数内部进行说明,则只能在main函数内部才能识别该函数。
7.5 调用函数和被调用函数之间的数据传递
调用函数和调用函数之间的数据传递
c语言中,调用函数和被调用函数之间的数据可以通过三种方式进行传递:
  (1)实在参数和形式参数之间进行数据传递。
  (2)通过return 语句所函数值返回调用函数。
  (3)通过全局变量。但这不是一种好的方式,通常不提倡使用。
  在C语言中,数据只能从实参单向传递给形参,称为“按什”传递。也即是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。
7.6 程序举例
程序举例


IP属地:浙江1楼2015-05-14 18:55回复