首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解argv和*++argv[0]

理解argv和*++argv[0]
EN

Stack Overflow用户
提问于 2014-07-30 13:55:07
回答 1查看 843关注 0票数 3

从K&R的C书第5.10章中,引入了argv的思想,以允许命令行参数。

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

代码语言:javascript
复制
(*++argv)[0] == '-'

根据我的理解,[0]*(argv + 0)是一样的,所以如果我取( *++argv)的值,然后将它与*(argv + 0)结合起来,我实际得到了什么?

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

  1. (*++argv) -检索argv指向的值(它提供另一个指针)
  2. [0]*(argv + 0) -然后从该语句返回指向下一个参数指针的下一个指针。
  3. 我看不出这个论点的第一个字符是如何从这个陈述中得到的。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-30 14:00:41

为了清晰起见,让我们分离出++

代码语言:javascript
复制
argv = argv + 1;

然后我们有:

代码语言:javascript
复制
(*argv)[0] == '-'

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

请记住,p[0]的定义是*(p+0),即*p。这和argv[0][0] == '-'是一样的。

argv[0]是指向字符串的第一个字符的char *。因此,argv[0][0]是该字符串的第一个字符。

argv = argv + 1;的作用是使argv指向下一个char *,它在前一个char *之后直接出现在内存中。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25038723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档