xiaohu168888 发表于 2016-2-16 15:40:45

为什么不能编译呢,不知道问题在那里?

#include<stdio.h>

void Exchg3(int &x,int &y)
{
   int tmp = x;
   x = y;
   y = x;
   printf("x = %d,y = %d\n",x,y);

}

void main()
{
      int a = 4;
      int b = 6;
      Exchg3(a,b);
      printf("a = %d,b = %d\n",a,b);
}



这个是一书上的一个例子,不知道为什么不能编译呢,不知道问题在那里?有时间的朋友,麻烦帮忙 看看?

人造人 发表于 2016-2-16 16:45:57

void Exchg3(int &x,int &y) // 这里不对吧
void Exchg3 (int *x, int *y) // 你确定不是这样

#include<stdio.h>

void Exchg3(int *x,int *y)
{
   int tmp = x;
   x = y;
   y = x;
   printf("x = %d,y = %d\n",x,y);

}

void main()
{
      int a = 4;
      int b = 6;
      Exchg3(a,b);
      printf("a = %d,b = %d\n",a,b);
}
这样就能编译了,不过运行结果可能不是你想要的
我猜 Exchg3 这个函数是交换两个变量的值吧,可以把这个程序的题目发上来吗?

xiaohu168888 发表于 2016-2-16 17:15:22

考题三,程序代码如下:
void Exchg3(int &x, int &y)
21
{
int tmp = x;
x = y;
y = tmp;
printf("x = %d,y = %d\n", x, y);
}
main()
{
int a = 4;
int b = 6;
Exchg3(a, b);
printf("a = %d, b = %d\n", a, b);
return(0);
}
输出的结果为:
x=____, y=____.
a=____, b=____.
问下划线的部分应是什么,请完成。
函数参数传递方式之三:引用传递
看题三的代码:
void Exchg3(int &x, int &y) /* 注意定义处的形式参数的格式与值传递不同 */
{
int tmp = x;
27
x = y;
y = tmp;
printf("x = %d, y = %d.\n", x, y);
}
main()
{
int a = 4;
int b = 6;
Exchg3(a, b); /*注意:这里调用方式与值传递一样*/
printf("a = %d, b = %d.\n”, a, b);
}
输出结果:
x = 6, y = 4.
a = 6, b = 4. /*这个输出结果与值传递不同。*/
看到没有,与值传递相比,代码格式上只有一处是不同的,即在定义处:
Exchg3(int &x, int &y)
但是我们发现a与b的值发生了对调。这说明了Exchg3(a, b)里头修改的是a、b变量,而不只是修改x、y了。
我们先看Exchg3函数的定义处Exchg3(int &x, int &y)。参数x、y是int的变量,调用时我们可以像值传递(如: Exchg1(a, b); )一样调用函数(如: Exchg3(a, b);)。但是x、y前都有一个取地址符号“&”。有了这个,调用Exchg3时函数会将a、b 分别代替了x、y了,我们称:x、y分别引用了a、b变量。这样函数里头操作的其实就是实参a、b本身了,也就是说函数里是可以直接修改到a、b的值了。

xiaohu168888 发表于 2016-2-16 17:16:41

本帖最后由 xiaohu168888 于 2016-2-16 17:22 编辑

人造人 发表于 2016-2-16 16:45
void Exchg3(int &x,int &y) // 这里不对吧
void Exchg3 (int *x, int *y) // 你确定不是这样



我把那个原题目发出来了,确实是取地址符,你参考下。我就是运行不了,不知道什么原因。

人造人 发表于 2016-2-16 17:41:04

xiaohu168888 发表于 2016-2-16 17:16
我把那个原题目发出来了,确实是取地址符,你参考下。我就是运行不了,不知道什么原因。

这是C++吧,我不懂C++, 抱歉

人造人 发表于 2016-2-16 17:47:29

人造人 发表于 2016-2-16 17:41
这是C++吧,我不懂C++, 抱歉

void Exchg3(int &x, int &y)
21 // 这里的21是怎么回事
{
int tmp = x;
x = y;
y = tmp;
printf("x = %d,y = %d\n", x, y);
}
main()
{
int a = 4;
int b = 6;
Exchg3(a, b);
printf("a = %d, b = %d\n", a, b);
return(0);
}

人造人 发表于 2016-2-16 17:50:54

xiaohu168888 发表于 2016-2-16 17:16
我把那个原题目发出来了,确实是取地址符,你参考下。我就是运行不了,不知道什么原因。

可以运行了,是中文标点符号的问题

人造人 发表于 2016-2-16 17:55:31

xiaohu168888 发表于 2016-2-16 17:16
我把那个原题目发出来了,确实是取地址符,你参考下。我就是运行不了,不知道什么原因。

看题三的代码:
void Exchg3(int &x, int &y) /* 注意定义处的形式参数的格式与值传递不同 */
{
int tmp = x;
27
x = y;
y = tmp;
printf("x = %d, y = %d.\n", x, y);
}
main()
{
int a = 4;
int b = 6;
Exchg3(a, b); /*注意:这里调用方式与值传递一样*/
printf("a = %d, b = %d.\n”, a, b); // 就是这里的双引号
}

xiaohu168888 发表于 2016-2-16 19:04:45

人造人 发表于 2016-2-16 17:47
void Exchg3(int &x, int &y)
21 // 这里的21是怎么回事
{


那上21不知道是那里来的,例题没有,

xiaohu168888 发表于 2016-2-16 19:10:30

本帖最后由 xiaohu168888 于 2016-2-16 19:15 编辑

人造人 发表于 2016-2-16 17:50
可以运行了,是中文标点符号的问题

我编译都不能过呀,错误提示assuming extern returning int                  warning C4013: 'Exchg3' undefined; assuming extern returning int能指点下吗,错在那里?
void Exchg3(int &x, int &y)我如果把这里的&干掉,能编译,也能打印出来,与你说的错误在中文标点符号不相符呀

人造人 发表于 2016-2-17 09:51:25

xiaohu168888 发表于 2016-2-16 19:10
我编译都不能过呀,错误提示assuming extern returning int                  warning C4013: 'Exchg3' ...

void Exchg3(int &x, int &y) /* 注意定义处的形式参数的格式与值传递不同 */
{
int tmp = x;
27
x = y;
y = tmp;
printf("x = %d, y = %d.\n", x, y);
}
main()
{
int a = 4;
int b = 6;
Exchg3(a, b); /*注意:这里调用方式与值传递一样*/
printf("a = %d, b = %d.\n”, a, b); // 仔细看这里,标点符号的确不一样啊
}

还有这个程序需要 C++ 环境 ,后缀为 .cpp

xiaohu168888 发表于 2016-2-17 10:48:46

人造人 发表于 2016-2-17 09:51
void Exchg3(int &x, int &y) /* 注意定义处的形式参数的格式与值传递不同 */
{
int tmp = x;


哦,明白,谢谢啦!

wjw1340 发表于 2016-2-19 16:19:37

改成void Exchg3(int x,int y)

13751652677 发表于 2016-2-19 21:45:47

我也不知道

fzquchs 发表于 2016-2-20 10:25:12

引用是c++的特性

542624047 发表于 2016-2-20 14:20:33

c++开头的包含文件是不是应该用 #include "stdafx.h"   你加上它再试试我加上他就可以编译出来乐

东印心迹静 发表于 2016-2-22 11:48:47

不太懂

q2484877 发表于 2016-2-23 11:37:59

好深奥
页: [1]
查看完整版本: 为什么不能编译呢,不知道问题在那里?