其它答案
*argv[]是指向字符型的指针数组, 其内容为命令行的参数. 命令本身(这里是./a.out)是第0个参数, *++argv指向命令行中第1个参数, 也就是./a.out 后面的那个参数. 输入"*"时, 程序正确地将乘号识别为一个字符, if语句中条件为true, 执行对i的赋值i=3*5; 所以输出是正确的. 如果不带引号, 程序不认为乘号*是一个字符, 因此if语句中的条件为false, 不执行对i的赋值. 换言之, 这时i没有被赋值, 输出的是一个随机的数字.
*是个通配符,你在命令行中输入*时,*会被展开成当前目录下所有文件的文件名再传入程序。