#include<stdio.h>
int main(int argc,char *argv[]) {
printf("%c",++**++argv);
return 0;
}
假设传递的命令行参数是:
./a.out one two three
输出结果为:
p
有人可以解释一下我发生了什么吗?
答案 0 :(得分:6)
从++**++argv
表达式的后面开始:
argv
作为指向元素零的指针开始,即"./a.out"
或""
++argv
char**
指向字符串"one"
*++argv
char*
指向字符串"one"
的初始元素**++argv
char
等于字符串"one"
的初始元素,即'o'
++**++argv
位于char
之后的'o'
。在大多数系统上'p'
。最后一个操作修改了程序的参数,这是标准允许的(Q&A)。