gpt4 book ai didi

c - 理解 argv 和 *++argv[0]

转载 作者:行者123 更新时间:2023-12-04 05:39:25 26 4
gpt4 key购买 nike

K&R 的 C 书的第 5.10 章开始,argv 的概念被引入以允许命令行参数。

argv 是指向字符指针数组的指针。据此,以下代码如何检查提供的参数是否以连字符开头?

(*++argv)[0] == '-'

根据我的理解,[0]*(argv + 0) 相同,所以如果我取 ( *++argv ) 然后将其与 *(argv + 0) 组合,我实际上得到了什么?

我知道它返回参数字符串的第一个字符,但如何返回呢?据我了解:

  1. (*++argv) - argv 指向的值被检索(这给出了另一个指针)
  2. [0]*(argv + 0) - 然后从该语句返回指向下一个参数指针的下一个指针。
  3. 我不明白参数的第一个字符是如何从这个语句中获得的。

最佳答案

为了清楚起见,让我们把 ++ 分开:

argv = argv + 1;

然后我们有:

(*argv)[0] == '-'

(我假设这出现在 if 语句中)。

请记住,p[0] 的定义是 *(p+0),即 *p 。所以这与 argv[0][0] == '-' 相同。

argv[0] 是一个 char * ,它指向字符串的第一个字符。所以 argv[0][0] 是该字符串的第一个字符。

argv = argv + 1;的作用是让argv指向下一个char *,它紧跟在内存中前一个。

argv 是指向 char * 的东西(它不是 char * 本身)。在相邻的内存中有一些char *,每一个都指向一个位于内存中其他地方的字符串。使用 argv,您可以遍历 char * 的列表。

关于c - 理解 argv 和 *++argv[0],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25038723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com