您的位置:首页 > 编程语言 > C语言/C++

漫谈C指针第八讲---参数传递的三道题目

2015-09-06 13:46 489 查看
考题一,程序代码如下:

#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语言中函数参数的传递有:值传递、地址传递、引用传递这三种形式。题一为值传递,题二为地址传递,题三为引用传递。不过,正是这几种参数传递的形式,曾把我给搞得晕头转向。我相信也有很多人与我有同感吧?

后面部分请让我逐个地谈谈这三种传递形式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 指针