c语言中main函数有一种特殊的形式即int main(int argc, char** argv),int main(int argc, char** argv)表示当执行程序时可以带上参数。
int main(int argc, char** argv)
{
while(**argv++!='a');
printf("%s", *argv);
return 0;
}
- 假设执行时就写为test1.exe abc bcd cde aed,可理解为要执行一个名为test1.exe的程序,并需要对abc bcd cde aed这几个字符串进行处理。
- 这argc表示参数的个数,此处argc=5,即test1.exe abc bcd cde aed这5个。
- argv表示的是命令行参数,char** argv可以看成char* argv[],即一个字符串数组,每个元素对应一个字符串,值为字符串的首地址。因此**argv就是字符串的首字母。
- **argv++!='a’就表示当字符串的首字母不等于a时,则跳过该字符串,继续判定下个字符串。一旦发现某个字符串首字母为a,则在argv++作用下输出下一个字符串。比如检测第一个字符串abc时发现首字母为a,则跳出while循环,并在argv++作用下输出bcd。
- 注意C语言中一元运算符*和++具有相等的优先级,但它们在结合时是从右向左的。(这是和其它运算符不相同的)
以下是一些测试,不难看出规律。