黑马程序员_C语言中函数参数的传递的三种形式
2014-03-24 12:39
155 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
C语言中函数参数的传递有:值传递、地址传递、引用传递这三种形式。下面用这三种方式来实现两个变量值的对调。代码一为值传递,代码二为地址传递,代码三为引用传递。示例代码一(该方法并不能实现两个变量值的对调):
#include <stdio.h> void Exchg1(int x, int y) { int temp; temp = x; x = y; y = temp; printf("x = %d, y = %d\n", x, y); } int main() { int a = 4,b = 6; Exchg1(a, b); printf("a = %d, b = %d\n", a, b); return(0); }
输出的结果为:
x = 6, y=4.
a = 4, b=6.
在调用函数Exchg1时,进行的只是简单地值传递,只是把a、b的值分别赋值给了x、y,之后在Exchg1函数体内再也没有对a、b进行任何操作了。交换的只是x、y变量的值,对变量a、b的值没有影响。所以调用Exchg1后变量a、b的值并没有交换。
示例代码二:
#include <stdio.h> void Exchg2(int *px, int *py) { int temp = *px; *px = *py; *py = temp; printf("*px = %d, *py = %d.\n", *px, *py); } int main() { int a = 4; int b = 6; Exchg2(&a, &b); printf("a = %d, b = %d.\n", a, b); return(0); }
输出的结果为:
*px=6, *py=4.
a=6, b=4.
在调用Exchg2函数时,进行的是地址传递,是把变量a、b的地址分别赋值给了指针变量px、py,这时对*px、*py的操作也就是对a、b变量本身的操作了。所以,交换*px、*py的值也就是交换变量a、b的值,调用Exchg2后,变量a、b的值交换。
示例代码三:
#include <stdio.h> void Exchg3(int &x, int &y) { int temp = x; x = y; y = temp; printf("x = %d,y = %d\n", x, y); } int main() { int a = 4; int b = 6; Exchg3(a, b); printf("a = %d, b = %d\n", a, b); return(0); }
输出的结果为:
x=6, y=4.
a=6, b=4.
在调用Exchg3函数时,进行的是引用传递, 是将a、b分别代替了x、y,也就是x、y分别引用了a、b变量。这样函数里面操作的其实就是实参a、b本身了,所以调用Exchg3后,变量a、b的值交换。
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- C语言中函数参数的传递的三种形式
- C语言中函数参数传递的三种方式
- 第二周【项目1c/c++语言中函数参数传递的三种形式】
- 项目1-C语言中函数参数传递的三种方式
- 第二周项目-c语言中函数参数传递的三种方式
- C语言:函数参数传递的三种方式
- 黑马程序员---------C语言 关于数组被当作函数参数传递的问题
- 第二周项目-c语言中函数参数传递的三种方式
- [C]C语言中函数参数传递的三种方式(x,*x,&x)
- C语言中函数参数传递的三种方式
- 黑马程序员-C语言-数组名作为函数参数
- 第2周项目1 函数参数传递的三种方式
- 第二周项目1-C/C++语言中函数参数传递的三种方式
- 第二周项目1--C/C++语言中函数参数传递的三种方式
- C语言中,数组名作为参数传递给函数时,退化为指针
- 项目1-c/c++语言中函数参数传递的三种方式
- 第一周 项目一C/C++语言中函数参数传递的三种方式
- 第2周项目1-C/C++语言中函数参数传递的三种方式
- 第二周项目 2—C/C++语言中函数参数传递的三种方式
- 转:C语言中如何将二维数组作为函数的参数传递