从K&R的C书第5.10章中,引入了argv的思想,以允许命令行参数。
argv是指向字符指针数组的指针。有鉴于此,下面的代码如何检查提供的参数是否以连字符开头?
(*++argv)[0] == '-'根据我的理解,[0]和*(argv + 0)是一样的,所以如果我取( *++argv)的值,然后将它与*(argv + 0)结合起来,我实际得到了什么?
我知道它返回参数字符串的第一个字符,但是如何返回呢?据我理解:
(*++argv) -检索argv指向的值(它提供另一个指针)[0]或*(argv + 0) -然后从该语句返回指向下一个参数指针的下一个指针。发布于 2014-07-30 14:00:41
为了清晰起见,让我们分离出++:
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 *,它在前一个char *之后直接出现在内存中。
argv是指向char *的东西(它本身不是char * )。相邻内存中有一些char *,每个都指向内存中其他位置的字符串。使用argv,您可以迭代该char *列表。
https://stackoverflow.com/questions/25038723
复制相似问题