从 K&R 的 C 书的第 5.10 章节中介绍了 argv
的概念,以允许命令行参数。
argv
是指向字符指针数组的指针。基于此,以下代码如何检查提供的参数是否以连字符开头?
if (*argv[1] == '-')
(*++argv)[0] == '-'
据我所知,
[0]
与*(argv + 0)
是相同的,因此,如果我获取(*++argv)
的值,并将其与*(argv + 0)
相结合,我实际上得到了什么?我知道它返回参数字符串的第一个字符,但是怎么做呢?据我理解:
(*++argv)
- 检索指针argv
指向的值(这会给出另一个指针)[0]
或*(argv + 0)
- 然后从此语句返回下一个指向下一个参数的指针。- 我不明白如何从该语句中获取参数的第一个字符。
argv[0]
相当于*(argv + 0)
。但是你没有argv[0]
。你有(*++argv)[0]
,所以它是*(*++argv + 0)
。 - chrisX[Y]
相当于*(X + Y)
。其中 X 为(*++argv)
,Y 为0
。在转换后,X 周围的括号是多余的。 - chris