考题一,程序代码如下:
#include "stdio.h"
void Exchg1(int x, int y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
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
Process returned 0 (0x0) execution time : 0.071 s
Press any key to continue.
考题二,程序代码如下:
#include "stdio.h"
void Exchg2(int *px, int *py)
{
int tmp = *px;
*px = *py;
*py = tmp;
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.
Process returned 0 (0x0) execution time : 0.073 s
Press any key to continue.
考题三,程序代码如下:(报错)
#include "stdio.h"
void Exchg3(int &x, int &y)
{
int tmp = x;
x = y;
y = tmp;
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;
}
你不在机子上试,能作出来吗?你对你写出的答案有多大的把握?
正确的答案,想知道吗?(呵呵,让我慢慢地告诉你吧。)
好,废话少说,继续我们的探索之旅了。
我们都知道:C语言中函数参数的传递有:值传递、地址传递、引用传递这三种形式。题一为值传递,题二为地址传递,题三为引用传递。不过,正是这几种参数传递的形式,曾把我给搞得晕头转向。我相信也有很多人与我有同感吧?
后面部分请让我逐个地谈谈这三种传递形式。