关于主函数的两个参数

xiaoshengaimm 2009-03-30 01:40:52
大家好,我是个菜鸟,有无高手可以赐教下关于主函数main中的两个参数main(int argc ,char **argv )有什么作用的。谢谢大家
...全文
190 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
once_and_again 2009-04-02
  • 打赏
  • 举报
回复
char *envp[]
这个东东相对来说用得比较少。它是用来取得系统的环境变量的。
leewon1988 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tangshuiling 的回复:]
C/C++ code
搜到一段解释,楼主自己看看:
int main( int argc , char *argv[] , char *envp[] )
main()函数一般用int或者void形的。我比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。

int argc
这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe
D:\tc2>test
这个时候,argc的值是1
但是
D:\tc2>test.exe mya…
[/Quote]

俺是来学习的。。。。。


cxxer 2009-03-30
  • 打赏
  • 举报
回复


int main(int argc, char *argv[]) // argc是传入的命令个数,argv是转入的命令字符串指针数组
{
return 0;
}
xiaoshengaimm 2009-03-30
  • 打赏
  • 举报
回复
谢谢各位指教
tangshuiling 2009-03-30
  • 打赏
  • 举报
回复

搜到一段解释,楼主自己看看:
int main( int argc , char *argv[] , char *envp[] )
main()函数一般用int或者void形的。我比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。

int argc
这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe
D:\tc2>test
这个时候,argc的值是1
但是
D:\tc2>test.exe myarg1 myarg2
的话,argc的值是3。也就是 命令名 加上两个参数,一共三个参数

char *argv[]
这个东东用来取得你所输入的参数
D:\tc2>test
这个时候,argc的值是1,argv[0]的值是 "test"
D:\tc2>test myarg1 myarg2
这个时候,argc的值是3,argc[0]的值是"test",argc[1]的值是"myarg1",argc[2]的值是"myarg2"。
这个东东一般用来为程序提供非常重要的信息,如:数据文件名,等等。
如:copy a.c b.txt
这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。
当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求

char *envp[]
这个东东相对来说用得比较少。它是用来取得系统的环境变量的。
如:在DOS下,有一个PATH变量。当你在DOS提示符下输入一个命令(当然,这个命令不是dir一类的内部命令)的时候,DOS会首先在当前目录下找这个命令的执行文件。如果找不到,则到PATH定义的路径下去找,找到则执行,找不到返回Bad command or file name
在DOS命令提示符下键入set可查看系统的环境变量
同样,在UNIX或者LINUX下,也有系统环境变量,而且用得比DOS要多。如常用的$PATH,$USER,$HOME等等。
envp保存所有的环境变量。其格式为(UNIX下)
PATH=/usr/bin;/local/bin;
HOME=/home/shuui
即:
环境变量名=值
DOS下大概也一样。
环境变量一般用来为程序提供附加信息。如,你做了一个显示文本的内容的程序。你想控制其一行中显示的字符的个数。你可以自己定义一个环境变量(UNIX下)
%setenv NUMBER = 10
%echo $NUMBER
10
然后你可以在程序中读入这个环境变量。然后根据其值决定一行输出多少个字符。这样,如果你不修改环境变量的话,你每次执行这个程序,一行中显示的字符数都是不一样的

wangyadong 2009-03-30
  • 打赏
  • 举报
回复
http://blog.163.com/shihko@126/blog/static/103910212008420408650/
Paradin 2009-03-30
  • 打赏
  • 举报
回复
传递命令行参数用

argc 表示参数个数 至少为1
argv 指向参数字符串数组 用户提供的参数从argv[1]开始,argv[0]为保留

比如
int main(int argc ,char **argv)
{
printf(argv[1]);
}

运行的时候在命令行上输入:program hello
运行结果:hello
fox000002 2009-03-30
  • 打赏
  • 举报
回复
传递命令行参数用

argc 表示参数个数

argv 指向参数字符串数组

65,210

社区成员

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

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