函数声明问题 (c++ 基础)

codejian 2011-08-30 06:22:22
在主函数main之前声明子函数,是不是一定要带上形参,为什么呢?
...全文
90 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQIANQQ 2011-08-30
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int max();
int main()
{
int a,b;
cout<<"输入2个!"<<endl;
cin>>a>>b;
cout<<"the big is"<<max(a,b)<<endl;
return 0;
}

int max(int a,int b)
{
cout<<"max"<<endl;//头文件里边定义了max()运行的时候没有输出max,根本就没有调用!
int x=a;
int y=b;
return (x>y)?a:b;
}
chen16501560 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zzm18 的回复:]
我在调试程序的时候把int max(),以及int max(int a,int b)注释掉程序照样运行。怎么回事?
[/Quote]
头文件内定义了max这个函数。。。。
z_snail_z 2011-08-30
  • 打赏
  • 举报
回复
他这个程序运行是没错的,因为主函数压根没有调用他定义的max函数,而是调用的iostream头文件里的max函数,所以他的程序可以运行。
ningto.com 2011-08-30
  • 打赏
  • 举报
回复
main函数里是从上面找的, 所以他找到了max()没有参数, 而你在调用的时候传入了两个参数所以报错。
ningto.com 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 codejian 的回复:]

C/C++ code

#include <iostream>
using namespace std;
int max();
int main()
{
int a,b;
cout<<"输入2个!"<<endl;
cin>>a>>b;
cout<<"the big is"<<max(a,b)<<endl;
return 0;
}

int max(int ……
[/Quote]

你这个出现错误的原因并不是函数申明问题, 而是你根本就没有申明。
上面两个函数是不同的函数
z_snail_z 2011-08-30
  • 打赏
  • 举报
回复
我在调试程序的时候把int max(),以及int max(int a,int b)注释掉程序照样运行。怎么回事?
仙度瑞城 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ryan_332595319 的回复:]
引用 3 楼 codejian 的回复:
C/C++ code


#include <iostream>
using namespace std;
int max();
int main()
{
int a,b;
cout<<"输入2个!"<<endl;
cin>>a>>b;
cout<<"the big is"<<max(a,b)<<endl;
return 0;
……
[/Quote]
所以我想上面那个声明根本不是属于下面的那个函数定义..
仙度瑞城 2011-08-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 codejian 的回复:]
C/C++ code


#include <iostream>
using namespace std;
int max();
int main()
{
int a,b;
cout<<"输入2个!"<<endl;
cin>>a>>b;
cout<<"the big is"<<max(a,b)<<endl;
return 0;
}

……
[/Quote]
在这里你把声明注释掉也是可以的...
至善者善之敌 2011-08-30
  • 打赏
  • 举报
回复
如果我没理解错你的意思的话不需要
codejian 2011-08-30
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int max();
int main()
{
int a,b;
cout<<"输入2个!"<<endl;
cin>>a>>b;
cout<<"the big is"<<max(a,b)<<endl;
return 0;
}

int max(int a,int b)
{
int x=a;
int y=b;
return (x>y)?a:b;
}



那这个子函数的声明在这里是为何呢?
ningto.com 2011-08-30
  • 打赏
  • 举报
回复
我用的vs2008不需要
maoxing63570 2011-08-30
  • 打赏
  • 举报
回复
不是,只要说明参数的类型就可以了

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧