一系列指针评估

时间:2016-10-19 22:07:15

标签: c pointers

有人可以告诉我如何评估内部循环指针:*++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) {
                ....
            }
            ...
        }
    }
}

1 个答案:

答案 0 :(得分:1)

数组下标运算符的优先级高于前缀++和解引用运算符。后两个运算符具有相同的优先级,并从右到左进行评估。第二个while循环中的表达式等同于:

*(++(argv[0]))

使用数组下标运算符获取指向字符串的指针,然后使用前缀增量将其增加1,现在指向第二个字符,然后使用解引用运算符获取字符。