main函数参数表(int argc,char** argv)怎么理解?这个的结果是什么?为什么?

程序T1的代码如下,则运行T1abcbcdcdeaed的输出结果是_______.intmain(intargc,char**argv){while(**argv++!=... 程序T1的代码如下,则运行T1 abc bcd cde aed的输出结果是_______.
int main(int argc, char** argv)
{
while(**argv++!='a');
printf("%s", *argv);
return 0;
}
展开
 我来答
匿名用户
推荐于2018-03-12
展开全部

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,不影响),就可以看出规律了

qz1578
2017-06-16 · TA获得超过248个赞
知道答主
回答量:61
采纳率:0%
帮助的人:19.1万
展开全部

main函数的参数表示从外部控制器传入的参数,argc为参数个数,argv为字符串数组代表各参数,其中,argv[0]为程序本身名称。

对于程序T1如下 运行T1 abc bcd cde aed

int main(int argc, char** argv)
{
/* argc=5;argv={"T1.exe","abc","bcd","cde","aed"} */
while(**argv++!='a') continue; /*原程序中此处有分号,视为continue*/
printf("%s", *argv);   
return 0;
}

程序的运行结果是 bcd

程序运行时:

读入参数后,argv指向"T1.exe"      

**argv!='a',进入循环,argv自增,指向"abc"

**argv=='a',退出循环,argv自增,指向 "bcd"

打印“bcd”

如果还有疑问欢迎继续追问

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
albumin
2015-07-31 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2384万
展开全部
argc 为命令行参数的数量,char **argv为命令行参数的指针
输出结果是T1
**argv返回当前参数的第一个字符,当它不等于字符a时,打印当前参数,argv++将参数指针自增
while(**argv++!='a') 就是判断当前参数的第一个字符是否等于字符a,然后将命令行参数指针argv自增
追问
额额,那个T1不是输入的参数,参数应该是abc  bcd  cde  aed

自增的话是移到第一个参数的下一个位置,还是下一个参数的第一个字母位置呢?
还有,麻烦说明一下 **argv++!='a' 这一条语句的运算符优先级好吗?主要是**和++的优先级。运算的时候是把指针*就看做一个符号还是把**argv看做一个整体呢?
追答
刚才看错了,while语句后还有个分号,while语句就是那一行就结束了,printf("%s", *argv);是单独的一行
应该是跳过以字符'a'开始的参数,然后打印以'a'开头的第一个参数
后++的优先级大于*,但是后自增表达式变量自增后,表达式返回的是原来的值,不是自增后的值
*是右结合的**argv即*(*argv) char **argv 表示指向字符串(字符指针)的指针,*argv返回字符串(字符指针) ,*(*argv)再返回字符
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式