形式参数的“存储类型”仅能是auto和 register 形式参数的作用域是定义它们的函数,其特性与 局部数据对象的特性相同,当函数每次被调用时为 其分配存储空间而存在,并在退出函数时随着存储 空间的回收而消亡,不能与该函数中其他局部变量 同名。 定义函数时不能给形式参数指定初始化值且形 式参数不进行初始化便可使用它们的初始化值是 调用该函数时由对应的实在参数传递过来的值
21 形式参数的“存储类型”仅能是auto 和register。 形式参数的作用域是定义它们的函数,其特性与 局部数据对象的特性相同,当函数每次被调用时为 其分配存储空间而存在,并在退出函数时随着存储 空间的回收而消亡,不能与该函数中其他局部变量 同名。 定义函数时不能给形式参数指定初始化值,且形 式参数不进行初始化便可使用,它们的初始化值是 调用该函数时由对应的实在参数传递过来的值
2、函数定义例 例1把数字字符串转换成整数的函数(原型格式) atoi( char sl])/*形式参数是数组时, 可不给出数组大小 int in=0 for(i=0;s|i>=0&&s[ik<=“9;++i) n=10n+f-“0; return(n); 该函数采用原型方式定义。没有指定函数类 型,则函数的返回值被转换成int型 22
22 atoi ( char s[ ] ) { int i , n=0 ; for ( i=0 ; s[i]>=‘0’ && s[i]<=‘9’ ; ++ i ) n=10*n+s[i] - ‘0’ ; return ( n ) ; } 2、函数定义例 例1 把数字字符串转换成整数的函数(原型格式) 该函数采用原型方式定义。没有指定函数类 型,则函数的返回值被转换成 int 型。 /* 形式参数是数组时, 可不给出数组大小 */
例2 binary(x, v, n) 个二分搜索函数的 int x, vI, ni 定义(传统定义格) int low=0, high=n-1, mid i 其中: while( low <=high)i mid=( low+high)/2; 形式参数x为要在数 if(x<mid) 组v]中搜索的对象 high= mid-1; 形式参数数组vl的 else if (x>vImid) 元素必须已经排序过 low= mid+1 数组作形式参数不必 else 给出数组大小,如该函数 return( mid )i 中形式参数v,其大小} 可通过另一参数给出,如 return(-1); 该函数中形式参数n。} 23
23 binary ( x , v , n ) int x , v[ ] , n ; { int low=0 , high=n-1 , mid ; while ( low <= high ) { mid = ( low+high ) / 2 ; if ( x < v[mid] ) high = mid-1 ; else if ( x > v[mid] ) low = mid+1 ; else return ( mid ) ; } return ( -1 ) ; } 一个二分搜索函数的 定义(传统定义格式) 其中: 形式参数 x 为要在数 组 v[ ] 中搜索的对象 形式参数数组v [ ] 的 元素必须已经排序过 数组作形式参数不必 给出数组大小,如该函数 中形式参数v[ ],其大小 可通过另一参数给出,如 该函数中形式参数 n 。 例2:
3、函数定义注意点 C语言允许定义参数个数不定的函数如 printi的 参数个数就是不定的)。如果函数要接收不定量的参 数,可把省略号(…)作为函数参数表中的最后一 个参数。例如: int printf( char*format, .o) ■推荐使用函数原型声明方式,因为它允许编译程 序在实际调用函数时检查参数的数目和类型,也允 许编译程序在可能时对参数进行数据类型转换。 24
24 3、函数定义注意点 C语言允许定义参数个数不定的函数(如printf的 参数个数就是不定的)。如果函数要接收不定量的参 数,可把省略号(…)作为函数参数表中的最后一 个参数。例如: int printf ( char *format , ...) 推荐使用函数原型声明方式, 因为它允许编译程 序在实际调用函数时检查参数的数目和类型, 也允 许编译程序在可能时对参数进行数据类型转换
虽然函数可以用“传统”和“原型”两种方式 声明,但是使用函数的说明方式最好与函数的定 义方式一致,否则结果不正确,这对浮点型的参数 特别明显。 也可以给main函数指定返值类型。 以后会知道,也可以给main函数指定形式参 数
25 虽然函数可以用“传统”和“原型”两种方式 声明, 但是使用函数的说明方式最好与函数的定 义方式一致,否则结果不正确,这对浮点型的参数 特别明显。 也可以给 main 函数指定返值类型。 以后会知道,也可以给 main 函数指定形式参 数