Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
2年前关闭。
假设传递的命令行参数为:
输出为:
有人可以解释一下情况吗?
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
2年前关闭。
#include<stdio.h>
int main(int argc,char *argv[]) {
printf("%c",++**++argv);
return 0;
}
假设传递的命令行参数为:
./a.out one two three
输出为:
p
有人可以解释一下情况吗?
最佳答案
从++**++argv
表达式的后面开始:argv
作为指向零元素的指针开始,即"./a.out"
或""
++argv
是char**
指向字符串"one"
*++argv
是char*
指向字符串"one"
的初始元素**++argv
是char
等于字符串"one"
的初始元素,即'o'
++**++argv
是紧随char
的'o'
。在大多数系统上是'p'
。
最后一个操作在适当的地方修改程序的参数,这是标准(Q&A)所允许的。
关于c - 为什么++ **++ argv的printf输出'p'? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48112305/
10-14 19:33