发布网友 发布时间:2022-05-12 18:52
共3个回答
热心网友 时间:2023-10-18 12:53
1、int main(int argc, char** argv)表示当执行程序时可以带上参数,所以题目中执行时就写为T1 abc bcd cde aed,可理解为要执行一个名为T1的程序,并需要对abc bcd cde aed这几个字符串进行处理
2、argc表示参数的个数,此处argc=5,即T1 abc bcd cde aed这5个
3、argv表示的是命令行参数,char** argv可以看成char* argv[],即一个字符串数组,每个元素对应一个字符串,值为字符串的首地址。因此**argv就是字符串的首字母
4、**argv++!='a'就表示当字符串的首字母不等于a时,则跳过该字符串,继续判定下个字符串。一旦发现某个字符串首字母为a,则在argv++作用下输出下一个字符串。比如检测第一个字符串abc时发现首字母为a,则跳出while循环,并在argv++作用下输出bcd
5、**argv++优先级可以看成**(argv++)
以下是一些测试(我的文件名是Cpp1.exe,不影响),就可以看出规律了
热心网友 时间:2023-10-18 12:54
main函数的参数表示从外部控制器传入的参数,argc为参数个数,argv为字符串数组代表各参数,其中,argv[0]为程序本身名称。
对于程序T1如下 运行T1 abc bcd cde aed
程序的运行结果是 bcd
程序运行时:
读入参数后,argv指向"T1.exe"
**argv!='a',进入循环,argv自增,指向"abc"
**argv=='a',退出循环,argv自增,指向 "bcd"
打印“bcd”
如果还有疑问欢迎继续追问
热心网友 时间:2023-10-18 12:54
argc 为命令行参数的数量,char **argv为命令行参数的指针追答刚才看错了,while语句后还有个分号,while语句就是那一行就结束了,printf("%s", *argv);是单独的一行
应该是跳过以字符'a'开始的参数,然后打印以'a'开头的第一个参数
后++的优先级大于*,但是后自增表达式变量自增后,表达式返回的是原来的值,不是自增后的值
*是右结合的**argv即*(*argv) char **argv 表示指向字符串(字符指针)的指针,*argv返回字符串(字符指针) ,*(*argv)再返回字符