🍍命令行参数
2021-1-23
| 2023-8-2
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
假设一个文件中有一个名为fuss的程序。在UNIX环境中运行该程序的命令行是:
或者在Windows命令提示模式下是:
命令行参数(command-line argument)是同一行的附加项:
一个C程序可以读取并使用这些附加项
notion image
notion image
 
C编译器允许main()没有参数或者有两个参数(一些实现允许main()有更多参数,属于对标准的扩展)。
main()有两个参数时,第1个参数是命令行中的字符串数量。过去,这个int类型的参数被称为argc (表示参数计数(argument count))。系统用空格表示一个字符串的结束和下一个字符串的开始。因此,上面的test示例中包括命令名共有4个字符串,其中后3个供test使用。该程序把命令行字符串储存在内存中,并把每个字符串的地址储存在指针数组中。而该数组的地址则被储存在 main()的第 2 个参数中。按照惯例,这个指向指针的指针称为argv(表示参数值[argument value])。如果系统允许,就把程序本身的名称赋给argv[0],然后把随后的第1个字符串赋给argv[1],以此类推。
main()中的形参形式与其他带形参的函数相同。许多程序员用不同的形式声明argv:
char **argvchar *argv[]等价。也就是说,argv是一个指向指针的指针,它所指向的指针指向 char。因此,即使在原始定义中,argv 也是指向指针(该指针指向 char)的指针。两种形式都可以使用,但我们认为第1种形式更清楚地表明argv表示一系列字符串。
顺带一提,许多环境(包括UNIX和DOS)都允许用双引号把多个单词括起来形成一个参数。例如:
这行命令把字符串"I am hungry"赋给argv[1],把"now"赋给argv[2]
 
  • C
  • 字符串函数作用域、链接、存储周期
    目录