函数的参数传递
2009-11-22 09:16 LeonDw 阅读(216) 评论(0) 收藏 举报函数的参数传递
-
参数传递思想
- 抽象是对某一类事物共同特征,或统一规律的描述.相对现实,具体操作高一层.
- 函数是相对主程序高一层的抽象,是对运行过程的描述.所以其输入参数称为形式参数.函数可类比成战术.
- 指针是相对存储内容高一层的抽象,是对存储位置的描述.指针集可类比,作战地图.
- 换言之,函数获得指针才取得对变量的控制权
-
-
参数传递分类
- 值传递
- 同一层次的操作,类比,纸上谈兵.凭票换礼品.
- 地址传递
- 类比,利用战术,作战地图,调兵遣将.
- 用于改变主程序参数的形式参数(即,主调函数也要用指针)要相对主程序参数升一级,加多一颗星
- 在函数内部的操作则与主程序用同一级
- 普通变量对应指针
- 数组对应指针
- {ps}数组跟普通的变量没什么区别,只是在存储逻辑上是一块的
- 数组名,指向数组元素的指针就能控制数组
- {eg}Win32API中的一些函数中,如wsprintf();
- 指针对应指向指针的指针
- 引用传递
- 1 void Exchang3(int &x,int &y)
2 {
3 int tmp;
4 tmp=x;
5 x=y;
6 y=tmp;
7 printf("x=%d,y=%d\n",x,y);
8 }
9 void main()
10 {
11 int a=1,b=2;
12 Exchang3(a,b);
13 printf("a=%d,b=%d\n",a,b);
14 } - 编译报错
- --------------------Configuration: p4 - Win32 Debug--------------------
Compiling...
p4.c
E:\p4.c(21) : error C2143: syntax error : missing ')' before '&'
E:\p4.c(21) : error C2143: syntax error : missing ')' before '&'
E:\p4.c(21) : error C2143: syntax error : missing '{' before '&'
E:\p4.c(21) : error C2059: syntax error : '&'
E:\p4.c(21) : error C2059: syntax error : ')'
执行 cl.exe 时出错.
p4.exe - 1 error(s), 0 warning(s) - {Solution}将后缀改为cpp编译通过并得出
- x=2,y=1
- a=2,y=1
- 为什么改为cpp才可以呢?C++在参数传递中多了些什么?可能C++的库才有引用传递吧.
-
参数传递总结
- 符号"*"有两种意思:
- int*p,定义声明变量时,表示该变量为指针变量
- *p=10,使用时,表示指针p指向的变量的内容
- 符号"&"的意思:
- 形式参数加"&"表示,通过调用形式参数能改变主程序对应变量的值
浙公网安备 33010602011771号