Chinaunix首页 | 论坛 | 博客
  • 博客访问: 942266
  • 博文数量: 146
  • 博客积分: 3321
  • 博客等级: 中校
  • 技术积分: 1523
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-29 10:32
文章分类

全部博文(146)

文章存档

2014年(2)

2013年(5)

2012年(4)

2011年(6)

2010年(30)

2009年(75)

2008年(24)

分类: C/C++

2008-09-15 16:46:30

        指向指针的指针可以用来处理命令行参数。有些操作系统,包括linux和ms-dos让用户在命令行中编写参
数来启动一个程序的执行。这些参数传递给程序,程序按照一定的方式对他们进行处理。 c程序的main函数有两个行参,第一个通常叫做argc,他表示命令行参数的多少。第二个通常叫做argv,
他指向一组参数。由于参数的数目并没有限制,所以argv指向这组参数(本质是一个数组)的第一个元素。如
果程序需要访问命令行参数,main函数在声明时就要加上这些参数: int main(int argc,char *argv[])这里的参数名可以任意取。 下图显示了这条命令行是如何传递的: $ echo -n hello linux argc = 4 argv[0]

'e'

'c'

'h'

'o'



                                                                                argv[1]

'-'

'n'

0

                                                                                                                                                   argv[2]

'h'

'e'

'l'

'l'

'o'

0

                                                                                                                                                        argv[3]

'l'

'i'

'n'

'u'

'x'

0

       注意指针数组:这个数组每个元素都是一个字符指针,数组的末尾是一个NULL指针。Argv指向数组的
第一个元素,第一个参数就是程序名。在有些系统中,参数字符串是挨个存储。这样当你把指向第一个参数的
指针向后移动,越过第一个参数尾部时,就达到第二个参数的开始。这种排列方式是由编译器决定的,所以我
们不能依赖他。为了寻找一个参数的起始位置,我们应该使用数组中合适的指针。 下面是一个简单的例子,用来打印出所有的参数(程序名除外) /*打印命令行参数的程序*/ #include #include int main(int argc,char *argv[]) { while(*++argv != NULL) /*打印参数,直到遇到NULL*/ printf(“%s\n”,*argv); return 0; } while循环增加argc的值,然后检查*argv ,看是否达到参数列表的尾部,方法是把每个参数都与表示列
表末尾的NULL比较。如果还存在另外的参数,循环体就执行,打印出这个参数。再循环一开始就增加argc
的值,程序名自然就被跳过。printf函数的格式字符串中的%s格式码要求参数是一个指向字符的指针。

阅读(961) | 评论(0) | 转发(0) |
0

上一篇:如何创建一个名为-i的文件

下一篇:数组

给主人留下些什么吧!~~