13.4 命令函参数
处理命令行参数是指向指针的指针的另一个用武之地。有些操作系统,包括UNIX和MS-DOS,让用户在命令行中编写参数来启动一个程序的执行。这些参数被传递给程序,程序按照它认为合适的任何方式对它们进行处理。
13.4.1 传递命令行参数
这些参数是如何传递给程序呢?C程序中的main函数具有两个形参。第1个形参称为argc,它表示命令行参数的数目。第2个通常称为argv,它指向一组参数值。由于参数的数目并没有内在的限制,因为argv指向这组参数值(从本质上说是一个数组)的第1个元素。这些元素的每一个都是指向一个参数文本的指针。如果程序需要访问命令行参数,main函数在声明时就要加上这些参数:
int main( int argc, char **argv )
注意,这两个参数通常取名为argc和argv,但它们并无神奇之处。如果你喜欢,也可以把它们称为fred和ginger,只不过程序的可读性会差一点。
下面这条命令行是如何进行传递的。
cc -c -o main.c insert.c -o test
注意指针数组:这个数组的每个元素都是一个字符指针,数组的末尾是一个NULL指针。argc的值和这个NULL值都用于确定实际传递了多少个参数。argv指向数组的第1个元素,这就是它被声明为一个指向字符的指针的指针的原因。
实际上,有些操作系统向main函数传递3个参数,它是一个指向环境变量列表以及它们的值的指针。
最后一个需要注意的地方是第1个参数就是程序的名称。把程序名作为参数传递有什么用意呢?程序显然知道自己的名字,通常这个参数是被忽略的。不过,如果程序采用几组不同的选项进行启动,此时这个参数就有用武之地了。在许多U
C和指针 第13章 高级指针话题 13.4 命令行参数
于 2022-07-01 15:19:16 首次发布
本文介绍了C语言如何处理命令行参数,主要讲解了命令行参数的传递方式,包括argc和argv的用途,以及如何通过main函数访问和处理这些参数。示例程序演示了打印命令行参数和区分选项参数与文件名参数的方法。
摘要由CSDN通过智能技术生成