注册 登录
编程论坛 C++教室

帮忙看看那错了

dong152liang 发布于 2010-03-18 13:12, 694 次点击
程序代码:
#include<iostream>
using namespace std;
int main()
{
    void swap(int x,int y,int z);
    int x,y,z;
    cout<<"Please enter three number:";
    cin>>x>>y>>z;
    swap(x,y,z);
    return 0;
}
void swap (int &a,int &b,int &c)
{
    int d;
    if (a>b){d=a;a=b;b=d;}
    if(c>b)cout<<a<<" "<<b<<" "<<c<<endl;
    else if(c<a)cout<<a<<"  "<<a<<"  "<<b<<endl;
    else cout<<a<<" "<<c<<" "<<b<<endl;
}
运行结果
Configuration: 1 - Win32 Debug--------------------
Linking...
11.obj : error LNK2001: unresolved external symbol "void __cdecl swap(int,int,int)" (?swap@@YAXHHH@Z)
Debug/1.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

1.exe - 1 error(s), 0 warning(s)
7 回复
#2
玩出来的代码2010-03-18 14:16
void swap(int&,int&,int&); 声明
#3
hahayezhe2010-03-18 16:50
如果你为了 测试引用 你可以把此函数 放在main函数上面 这样 就不需要在main()里定义了
#4
apull2010-03-18 17:05
swap的聲明和定義不一樣。
設置成一樣的。

void swap (int &a,int &b,int &c)
也不對。用int *聲明參數。
使用的時候用int &傳入參數
#5
ltyjyufo2010-03-18 17:52
   !!!!如果你的函数是写在main函数之前,你可以不要进行函数申明,单定义在main函数之后,就一定要对他进行申明,否则电脑就不知道你那是什么东西了。。。。。。
#6
dong152liang2010-03-18 22:08
谢谢各位的点评  我解释一下  我是使用“变量的引用” 我知道把定义的函数放在主函数前在主函数中可以不声明  我就是想知道如果主函数在定义函数前怎么声明  
#7
Cove_Xy2010-03-19 03:58
回复 6楼 dong152liang
#include<iostream>
using namespace std;
//这样就是声明
void swap(int &,int &,int &);
//声明结束
int main()
{
    int x,y,z;
    cout<<"Please enter three number:";
    cin>>x>>y>>z;
    swap(x,y,z);
    return 0;
}
void swap (int &a,int &b,int &c)
{
    int d;
    if (a>b){d=a;a=b;b=d;}
    if(c>b)cout<<a<<" "<<b<<" "<<c<<endl;
    else if(c<a)cout<<a<<"  "<<a<<"  "<<b<<endl;
    else cout<<a<<" "<<c<<" "<<b<<endl;
}
#8
chsteven2010-03-19 12:21
以下是引用dong152liang在2010-3-18 22:08:38的发言:

谢谢各位的点评  我解释一下  我是使用“变量的引用” 我知道把定义的函数放在主函数前在主函数中可以不声明  我就是想知道如果主函数在定义函数前怎么声明  
楼上已经有人说得很明白了,请仔细看下你的声明和定义
void swap(int x, int y, int z);

void swap(int &x, int &y, int&z)
{
    。。。
}
1