问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间: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

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”

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

热心网友 时间:2023-10-18 12:54

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)再返回字符

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
微信里头怎样才能用哈语打字 QQ音乐每月听歌报告怎么看 每月听歌报告查看方法介绍 “却”字造句怎么写【优选51句】 微商业绩一年500万,怎么估值? 如何养殖小叶紫檀 钨铜刨花哪家好 求男主对女主一见钟情的小说 无虐 宠文甜文一对一 双C 类似于真婚厚爱... 金毛可以吃煮过的生蚝吗 有什么制作酥蜜粥的小妙招? 伏特加和其他酒类的口感有什么区别? 错误代码 100000be,参数1 aed60000,参数2 4d6f4121,参数3 b00fc390,参数4 0000000b。 交警路面监控录像一般保存多长时间? 有相对好用的AED除颤仪没?哪款较好些? 中信证券(山东)有限责任公司城阳正阳路证券营业部介绍? 有相对好用的AED除颤仪没?什么牌子好? 中信证券(山东)核心网上交易账号找不到怎么办 中信证券山东公司烟台分公司待遇如何? 中信证券青岛总部营业部为啥特殊 新鲜冰冻血浆特点与输注适应证有哪些 我该用什么洗面奶和护肤品? 男生如何选择洗面奶和护肤品? 一个星期没用洗面奶和护肤品,一个星期后皮肤会变成啥样? 谁有这个 我有射街视频 换的进 速达财务软件自动转帐怎么用? 速达软件3系列批号管理做法怎么用? 速达软件怎么把已经引用的文件返审核 跪求 速达3000XP系统使用操作方法 速达软件怎样用 使用速达软件系统如何正确设置系统日期格式? 速达软件5月份开始使用一月到四月份的发生额怎么操作呢 路面监控录像一般可以保存多久,有保存一年的吗? 中信证券(山东)有限责任公司郑州秦岭路证券营业部怎么样? 中信证券(山东)有限责任公司南阳人民北路证券营业部怎么样? 如何查看memchaed缓存的信息 微星老主板advaed里没有cpu configuration 怎样能查到路面监控录像? AMD phenom x3 8750好还是英特尔g1620好 绘图软件怎样下载 我想下载一个绘图软件怎么下载? 如何下载在电脑上画画的软件 蓝天是什么比喻句 怎样才可以下载Lo GO的画画软件 小米VR正式版好还是小宅Z4好 蓝天是什么颜色 小米6支持小米VR正式版吗 蓝天是什么的摇篮 蓝天是什么形成的? 蓝天是干什么的 小米VR正式版是否能在其它有TypeC的手机上使用 小米VR正式版是用7号电池的吗