POJ第一题很简单就是A+B输出值,但是通过率只有一半,我想很多人都是代码版本问题,其中我遇到的就是C++的mian函数返回值为int型。由于之前写的时候喜欢用void返回类型,为此特意了解了一下C++的main函数传参和返回值的问题。
在 C89(C语言的早期标准)中,main() 是可以接受void返回值的。Brian W. Kernighan 和Dennis M. Ritchie 的经典巨著 The C programming Language(《C 程序设计语言》)用的就是void main()。不过在最新的 C99 标准中,只有以下两种定义方式是正确的:
(1)int main( void )
(2)int main( int argc, char *argv[] )
如果你不需要从命令行中获取参数,请用 int main( void ) ;否则请用 int main( int argc, char *argv[] ) 。
如果 main 函数的最后没有写return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入 return 0 ,表示程序正常退出。 也就是说return是为了告诉调用进程我这个程序执行正确与否 使用cmd命令行运行时可以看出其结果改变了环境变量errorlevel
例如:
#include<iostream>
using namespace std;
void main()
{
cout<<"hello World";
}
结果
结果0为自动加入的返回
更改为
#include<iostream>
using namespace std;
int main()
{
cout<<"hello World"<<endl;
return 1;
}
对于输入参数:
在int main( int argc, char *argv[] )
(1)argc:代表传入了多少参数(main()函数为索引为0的参数,所以argc最少为1)
(2)argv[]:具体参数值
例如:
#include<iostream>
using namespace std;
int main(int argc,char *argv[])
{
cout<<"hello World"<<endl;
cout<<"argc:"<<argc<<endl;
cout<<"argv:"<<*argv[1]<<endl;
return 1;
}
结果: