Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过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"""
++argvchar**指向字符串"one"
*++argvchar*指向字符串"one"的初始元素
**++argvchar等于字符串"one"的初始元素,即'o'
++**++argv是紧随char'o'。在大多数系统上是'p'


最后一个操作在适当的地方修改程序的参数,这是标准(Q&A)所允许的。

关于c - 为什么++ **++ argv的printf输出'p'? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48112305/

10-14 19:33