1 / 10
文档名称:

(11) 函数参数的传递和值返回.doc

格式:doc   大小:104KB   页数:10
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

(11) 函数参数的传递和值返回.doc

上传人:xxj16588 2016/8/15 文件大小:104 KB

下载得到文件列表

(11) 函数参数的传递和值返回.doc

相关文档

文档介绍

文档介绍:(11) 函数参数的传递和值返回前面我们说的都是无参数无返回值的函数, 实际程序中, 我们经常使用到带参数有返回值的函数。一、函数参数传递 1. 形式参数和实际参数函数的调用值把一些表达式作为参数传递给函数。函数定义中的参数是形式参数, 函数的调用者提供给函数的参数叫实际参数。在函数调用之前,实际参数的值将被拷贝到这些形式参数中。 2. 参数传递先看一个例子: void a(int); /* 注意函数声明的形式*/ main() { int num; scanf(%d,&num); a(num); /* 注意调用形式*/ } void a(int num_back) /* 注意定义形式*/ { printf(%d\n,num_back); } 在主函数中, 先定义一个变量, 然后输入一个值,在 a() 这个函数中输出。当程序运行 a(num); 这一步时,把 num 的值赋值给 num_back , 在运行程序过程中, 把实际参数的值传给形式参数, 这就是函数参数的传递。形参和实参可能不只一个, 如果多于一个时, 函数声明、调用、定义的形式都要一一对应,不仅个数要对应,参数的数据类型也要对应。 void a(int,float); main() { int num1; float num2; scanf(%d,&num1); scanf(%f,&num2); a(num1,num2); } void a(int num1_back,float num2_back) { printf(%d,%f\n,num1_back,num2_back); } 上面的例子中, 函数有两个参数, 一个是整型, 一个是浮点型, 那么在声明、调用、定义的时候, 不仅个数要一样, 类型也要对应。如果不对应, 有可能使的编译错误, 即使没错误, 也有可能让数据传递过程中出现错误。再看一个例子: void a(int); main() { int num; scanf(%d,&num); a(num); } void a(int num) { printf(%d\n,num); } 看上面的例子, 形式参数和实际参数的标识符都是 num , 程序把实际参数 num 的值传递给形式参数 num 。有些人可能就不明白了, 既然两个都是 num ,为什么还要传递呢?干脆这样不就行了吗: void a(); main() { int num; scanf(%d,&num); a(); } void a() { printf(%d\n,num); } 其实不然, 这就要涉及到标识符作用域的问题。作用域的意思就是说, 哪些变量在哪些范围内有效。一个标识符在一个语句块中声明, 那么这个标识符仅在当前和更低的语句块中可见, 在函数外部的其实地方不可见, 其他地方同名的标识符不受影响, 后面我们会系统讲解作用域的问题。在这儿你就要知道两个同名的变量在不同的函数中是互不干扰的。前面将的都是变量与变量之间的值传递, 其实函数也可以传递数组之间的值。看下面的例子: void a(int []); main() { int array[5],i; for(i=0;i<5;i++) scanf(%d,&array[i]); a(array); } void a(int array[]) { int i;