有人可以告诉我如何评估内部循环指针:*++argv[0]
。
它最终如何从参数中获取第二个字符?
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
while (--argc > 0 && (*++argv)[0] == '-') {
while ((c = *++argv[0])) {
switch (c) {
....
}
...
}
}
}
答案 0 :(得分:1)
数组下标运算符的优先级高于前缀++和解引用运算符。后两个运算符具有相同的优先级,并从右到左进行评估。第二个while循环中的表达式等同于:
*(++(argv[0]))
使用数组下标运算符获取指向字符串的指针,然后使用前缀增量将其增加1,现在指向第二个字符,然后使用解引用运算符获取字符。