指针作为函数参数(一)

上传人:豆浆 文档编号:49004019 上传时间:2018-07-22 格式:PPT 页数:9 大小:219KB
返回 下载 相关 举报
指针作为函数参数(一)_第1页
第1页 / 共9页
指针作为函数参数(一)_第2页
第2页 / 共9页
指针作为函数参数(一)_第3页
第3页 / 共9页
指针作为函数参数(一)_第4页
第4页 / 共9页
指针作为函数参数(一)_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《指针作为函数参数(一)》由会员分享,可在线阅读,更多相关《指针作为函数参数(一)(9页珍藏版)》请在金锄头文库上搜索。

1、指针作为函数参数(一)小组成员:邓曦、高问、周亚娟 王家月、孙秋霞函数参数的传递 1.值传递 实参的功能:将调用函数中的变量或常量的数值单向 复制给被调函数中的形参。 形参的功能:接收并保存实参复制过来的数值。 实参:表达式、变量、常量、函数值(传递值) 形参:变量 2.地址传递:指针作为函数参数 形参:指针变量 实参:指针变量或变量地址(传递地址)函数参数传递的特点 1)实参由调用函 数提供2)形参由被调函数 提供 Float average(int a,int b)Void main()Int x,y,m;Scanf(“%d%d”,m=max(x,y);Printf(“max=%dn”,m

2、);实参的前面不能有 类型符,形参需要 先分配存储单元, 再接受数据,所以 前面要有类型符单向传递例6.7 编写交换两个变量值的函数swap()。void swap(int x, int y) /x和y是 形参 int t; t=x; x=y; y=t; printf(“x=%d,y=%d n“, x, y); 5 5.2ab52Swap()xy5t25运行结果如下: x=2, y=5 a=5, b=2#include void swap(int x, int y); /x和y是形 参 void main() int a=5, b=2; swap(a, b); / a和b是 实参 printf

3、(“a=%d, b=%d n“, a, b) ; void void funcfunc ( (intint a) a) a = 5; a = 5; void main ( )void main ( ) intint b = 0; b = 0; funcfunc (b); (b); printfprintf (“b = % (“b = %dndn“, b); “, b); 传值调用传值调用运行结果:运行结果:b = 0b = 0 funcfunc ( (intint a) a) a = 5; a = 5;return a; return a; void main ( )void main ( )

4、 intint b = 0,c; b = 0,c; c= c=funcfunc (b); (b); printfprintf ( (“ “c = %c = %dndn“, c); “, c); 传值调用传值调用运行结果:运行结果:c = 5c = 5 void swap (void swap (intint x, x, intint y) y) intint temp; temp;temp = x; temp = x;x = y; x = y;y = temp; y = temp; void main ( )void main ( ) intint a, b; a, b;scanf(“%d%d

5、“, );if(ab) swap(a,b); if(ab) swap(a,b);printf(“n%d,%dn“,a,bprintf(“n%d,%dn“,a,b); ); 【例例】将数从大到小输出将数从大到小输出.2000200020082008200A200A2002200220042004200620065 5变量变量a a变量变量b b(main)(main)9 9变量变量temptemp变量变量y y变量变量x x(swap)(swap)5 55 59 9 5 59 9COPYCOPYa=5; b=9;void void swap(intswap(int *p1, *p1, intin

6、t *p2) *p2) intint p; p;p = *p1; p = *p1;*p1 = *p2; *p1 = *p2;*p2 = p; *p2 = p; void main ( )void main ( ) intint a, b; a, b;intint *p_1, *p_2; *p_1, *p_2;scanfscanf (“% (“%d,%dd,%d“, “, p_1 = p_2 = p_1 = p_2 = if (a b) if (a b) swap (p_1, p_2);swap (p_1, p_2);printfprintf (“ (“n%d,%dnn%d,%dn“, a, b

7、);“, a, b); .2000200020082008200A200A200220022004200420062006200C200C 200E200E 20102010.5 5 9 9整型变量整型变量a a整型变量整型变量b b(main)(main)指针指针p_1p_1指针指针p_2p_220002000 20022002(swap)(swap)指针指针p1p1 指针指针p2p2整型整型p p5 59 920002000 20022002COPYCOPY5 5【例例】将数从大到小输出将数从大到小输出a=9; b=5void swap (void swap (intint *p1, *p

8、1, intint *p2) *p2) intint *p; *p;p = p1; p = p1;p1 = p2; p1 = p2;p2 = p; p2 = p; void main ( )void main ( ) intint a, b; a, b;intint *p_1, *p_2; *p_1, *p_2;scanfscanf (“% (“%d,%dd,%d“, “, p_1 = p_2 = p_1 = p_2 = if (a b) if (a b) swap (p_1, p_2);swap (p_1, p_2);printfprintf (“% (“%d,%dd,%d“, *p_1,*

9、p_2);“, *p_1,*p_2); 运行结果:运行结果:5 5,9 9.2000200020082008200A200A200220022004200420062006200C200C 200E200E 20102010.5 5 9 9整型整型a a整型整型b b(main)(main)p_1p_1p_2p_220002000 2002200220002000 20022002COPYCOPY(swap)(swap)指针指针p1p1 指针指针p2p2指针指针p p*20002000地址传递地址传递2000200020022002【例例】将数从大到小输出将数从大到小输出小结: 参数传递方式:传值调用和传址调用参数传递方式:传值调用和传址调用 传值调用传值调用:将参数值传递给形参。实参和形:将参数值传递给形参。实参和形 参占用各自的内存单元,互不干扰,函数中参占用各自的内存单元,互不干扰,函数中 对形参值得改变不会改变实参的值,属于对形参值得改变不会改变实参的值,属于单单 向数据传递方式。向数据传递方式。 传址调用传址调用:将实参的地址传递给形参。形参:将实参的地址传递给形参。形参 和实参占用同样的内存单元,对形参值得改和实参占用同样的内存单元,对形参值得改 变也会改变实参的值,属于变也会改变实参的值,属于双向数据传递双向数据传递方方 式。式。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号