viperchaos

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

argc是从命令行获得的命令参数数目,argv[]是从命令行获得的数组,数组元素为具体的命令字符串

如果从命令行输入:whereis /home .c

打印出来的结果为:

arg0: whereis

arg1: /home

arg2: .c


#include "stdio.h"

int main(int argc, char *argv[])
{
	int k;
	for(k = 0; k < argc; k++)
	printf("arg%d: %s\n", k, argv[k]);

}

在C语言中,将数组作为参数毫无意义,它会自动地将参数的数组声明转换为相应的指针声明,下面的两种

写法是完全相同的。

 

int strlen(char s[])
int strlen(char*  s)

 

经常看到main()参数的两种形式:

 

main(int argc, char* argv[ ])
main(int argc, char** argv)

 

前一种写法强调的重点是在于argv是一个指向某数组的起始元素的指针,该数组的元素巍为字符指针类型。这两种写法是等价的。

参考资料:

1.《C陷阱与缺陷》  P42

posted on 2010-11-17 10:25  viperchaos  阅读(214)  评论(0编辑  收藏  举报