main函数的原型只有两种形式:不带形参表和带形参表。
一、不带形参表
int
main(void)
{
return
0;
}
极其简单几句代码,是任何程序不可或缺的组成部分,有几个点值得我们注意:
- 每个程序有且只要一个main函数,它是入口函数,但不一定是第一个执行的函数。
- main函数是系统唯一显示调用的函数。
- 对于main函数,返回类型必须是int型(C++98标准,即ISO/IEC 14882-1998),新标准不允许使用默认返回值,即int不能省,而且对应main函数不再支持void型返回值。返回值0往往表示main函数成功执行完毕。(虽然返回是int型,拥有32位,但系统只用一个字节--即8位,的空间存储返回值)
二、带形参表
int
main(int argc, char *argv[], char *env[])
{
return
0;
}
由于第二个参数和第三个参数是字符串数组,因此也可以这样定义:
int
main(int argc, char **argv, char **env)
{
return
0;
}
其中最常见的是下面的形式:
int main(int argc, char *argv[]
)
{
return
0;
}
带形参表的main函数有些特征更需要我们注意:
- 第一个形参argc传递数组中字符串的个数,第二个形参argv是一个C风格的字符串数组,第三个形参env是系统的一些环境设置,形式为ENV = value。
- 当实参传递给主函数main是,第一个argv字符串数组的元素通常是程序的名字。
- 第二个实参以空格表示不同的字符串,若想将一个字符串中间出现空格,可使用"",如"my main"。
- 重要的性质:argv[argc] = NULL
例如:
// 文件名为:main2.cpp
// 工程名为:main2
#include <iostream>
using std::cout;
using std::endl;
int main(int argc, char *argv[], char *env[])
{
int i;
cout<<"there are "<<argc<<" strings"<<endl;
for( i = 0; i < argc; i++)
{
cout<<"argv["<<i<<"] = "<<argv[i]<<endl;
}
for( i = 0; env[i] != NULL; i++)
{
cout<<"env["<<i<<"] = "<<env[i]<<endl;
}
return 0;
}
将系统工具cmd定位在你当前的工程目录下,然后输入:
main2 my first "main test!!"
结果如下:
附:
在VC等集成环集下直接输入命令行参数
1. 在你的项目中 选择 Project/setting... 菜单项
2. 在弹出的Project Settings 对话框中的右侧, 选择 Debug Tab
3. 在 Program arguments: 下键入你的命令行参数便可!
1. 在你的项目中 选择 Project/setting... 菜单项
2. 在弹出的Project Settings 对话框中的右侧, 选择 Debug Tab
3. 在 Program arguments: 下键入你的命令行参数便可!