C语言教程哈尔滨工业大学计算机学院.ppt

函数(Function) 在定义函数中指定的形参,在未出现函数调用时,他们并不占用内存空间,只有在发生函数调用时,形参才被分配内存,在函数调用结束后,形参所占的内存单元也被释放。 实参可以是常量、变量、表达式,但要求他们有确切的值。 在被定义的函数中,必须指定形参的类型。 实参与形参的类型应相同或赋值兼容。 实参变量对形参变量的数据传递是“值传递”,即单项传递,只能由实参传给形参,而不能由形参传回来给实参。 函数的返回值 通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值。 函数的返回值是通过函数中的 return 语句获得的。 Max(int x,int y){ ... .... return z; } 函数的返回值类型在函数定义时指定。 函数返回值 int max(float x,float y){ } char letter(char c1,char c2){ } 如果函数名前没有数据类型,一律自动按整型处理。 如果函数值类型和 return 语句中的表达式的值不一致,则以函数类型为准。 为了明确表示“不带回参数”,可以用“void”表示“无类型”。 函数值为整型 函数值为字符型 函数的调用 函数调用的一般形式: 函数名( 实参表列 ); 如果调用无参函数,“实参列表”可以没有,但()不能省略。 如果实参表列包含多个参数,各参数间以“,”隔开。 实参与型参按顺序对应。 函数调用方式: 函数语句 printstar(); 函数的调用 函数表达式 c = 2*max(a,b); 函数参数 m = max(a,max(b,c)); 函数的声明和函数原型 在一个函数中调用另一个函数须具备以下条件: 被调用函数必须是已经存在的函数(库函数或用户自己定义的函数)。 如果使用库函数,应在本文件的开头包含有关库函数的信息 #include〈stdio.h〉 如果使用用户自己定义的函数,而且该函数与调用它的函数 (即主调函数) 在同一个文件中,一般还应该在主调函数中对被调函数作声明(declaration)。 float add(float a,float b); 以上函数声明称为函数原型(function prototype) 函数的声明和函数原型 上面的函数声明形参名可以省略,如以下: float add(float,float); 函数的嵌套调用 C语言的函数定义都是互相平行、独立的,即在定义函数时,一个函数内不能包含另一个函数。也就是说C语言不能嵌套定义函数。 C语言可以嵌套调用函数。即在调用一个函数的过程中,又调用另一个函数。 函数的嵌套调用 Main函数 调用a函数 a函数 调用b函数 b函数 结束 函数的递归调用 函数与数组 数组元素作函数参数: (与变量做实参一样), 是单向值传递。 max(a[0],a[1],a[2]); 数组名可作函数参数: float max(float a[10]){ ... ... } main(){ float score[10]={60.2, 72.3, 80.6, 92.8}, temp; temp = max( score ); } 函数与数组 说明: 用数组名作函数参数,应该在主调函数与被调函数分别定义数组,不能在一方定义。 实参数组与形参数组类型必须一致。 实参数组与形参数组大小可以一致也可以不一致,C编译器对形参数组的大小不作检查。 形参数组也可以不指定大小。 float max( float a[ ] ){ } 数组名作函数实参时,不是把数组的值传给形参,而是把实参数组的起始地址传递给形参数组,两个数组共占同一段内存。 函数与多维数组 多维数组可以作为实参,与一维数组相同。 可以用多维数组名作为实参与形参。 在被调函数中对形参数组定义时可以指定每一维的大小,也可以省略第一位的大小说明,但不能把第二维或其他高维的大小说明省略。 max( int array[3][10] ){ } max(int array[ ][10] ){ } 合法语句 max(int array[ ][ ]){ } 非法定义 函数与指针 指针可以作为实参与形参。 形参与实参都用数组名: main(){ int a[10]; ... ... f (a,10); } f ( int x[], int n ){ ... ... } 函数与指针 实参用数组名,形参用指针变量: ma

文档评论(0)

1亿VIP精品文档

相关文档