【发布时间】:2011-01-02 12:27:07
【问题描述】:
我有以下sn-p的代码:
int main(int argc, char *argv[])
{
char line[MAXLINE];
long lineno = 0;
int c, except = 0, number = 0, found = 0;
while(--argc > 0 && (*++argv)[0] == '-') //These two lines
while(c = *++argv[0]) //These two lines
switch(c) {
case 'x':
except = 1;
break;
case 'n':
number = 1;
break;
default:
printf("find: illegal option %c\n", c);
argc = 0;
found = -1;
break;
}
...
}
包含以下表达式:
while(--argc > 0 && (*++argv)[0] == '-')
括号中的 (*++argv)[0] 与不带括号的 while(c = *++argv[0]) 是否不同?
如果是这样,怎么做? (*++argv) 是否表示指向下一个参数的指针,*++argv[0] 是否表示指向当前 char 数组中被指向的下一个字符的指针?
【问题讨论】:
-
我还对一件事感兴趣:while(c = *++argv[0]) 这个表达式。这实际上是否意味着:while(c = *++argv[0] != 0),我的意思是如果 *++argv[0] 没有找到一个字符,它是否返回一个指向 c 的空指针?
-
如我的回答中所述,请参阅 K&R 在此代码上的勘误表条目:cm.bell-labs.com/cm/cs/cbook/2ediffs.html