main函数参数解析

main函数参数解析

ID:27707224

大小:67.24 KB

页数:5页

时间:2018-12-04

main函数参数解析_第1页
main函数参数解析_第2页
main函数参数解析_第3页
main函数参数解析_第4页
main函数参数解析_第5页
资源描述:

《main函数参数解析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、main函数参数解析在我们口常编写C语言程序时,必不可少的是main函数,那么在标准C的环境下,main函数的写法有下面两种:①:intmain(v()id)②:intmain(iiitargc,char**argv)弟一种写法为不带参数的main函数,这个我们就不再讨论了。但是第二种,很多人就比较纠结,argc和argv又是什么呢?这就是我们这次需要讨论的问题。第二种标准写法中,argc表示的是执行此程序时,读入的字符串个数;argv是个指针数组,用来存放读入的字符串。那么我们可以看一下下面的程序:#include〈s

2、tdio.h〉intmain(ir.targc,char*argv[]){inti=0;for(i二0;i〈argc;i++){printf('祐%d个参数:%s,i,*++argv);0;•©_」Dome—bash—80x24xiaozhi—cc:Domexiaozhi_cc$moreTest.c痒includeintmain(intargc,char*argv[】)inti=0;//char*Tag(l={"Hello••广World","xiaozhiM};for(i=0;i

3、)printf•第如个参数:%s",i,*argv++);//printf<••第姑个参数:%sMfif*Tag*+);}return0;xiaozhi-cc:Domexiaozhi一ccSgccTest.c-oTestxiaozhi-cc:Domexiaozhi_cc$./TestHelloworld第0个参数:./Test第1个参数:Hello第2个参数:worldxiaozhi-cc:Domexiaozhi_cc$程序运行如上图,在Shell下运行,当执行./TestHelloworld后,程序输出的./T

4、est、Hello,world这三个那么我们从这里也可以看出来argc的值为3。根据标准main函数的解释,argc力传入字符串的个数,argv中存放对应的字符串。那么我们现在在更改下程序,我在程序中再加入一个字符串数组,同样的,在输出环节也输出后加入的字符串数组,为了方便我在这里就给字符串数组限定为3个字符串。main(intargc,char*argv口)};,i,氺argv++);,i,*Tag++);inti=0;char*Tag[]={"Hello'for(i=0;i

5、参数:printf("策%d个参数:}LDome-bash—80x24xiaozhi-cc:Domexiaozhi_ccSgccTest.c-oTestTest.c:10:46:cannotincrementvalueoftype'char本[3]printf(••第%(1个参數:*s",i,*Tag++);1errorgenerated.xiaozhi-cc:DomexiaozhiccS但是我们在这次编译中却出现了一个错误,编译器告诉我们error:cannotincrementvalueoftype?char*[

6、3],’’,KP不可进行增量运算。那么同样是字符串数组,为什么argv可以,而自定义的字符串数组Tag不可以呢?其实这个问题,如果各位看过标准C的蓝皮书,那么这个问题很容易就能理解。我们知道数组名实际上是个常量,是不可以被直接修改的,那就意味这数组名是不可以进行增量运算的,这就是数组与指针最大的区别。而上面的问题中,argv与Tag最大的一个区别是,前者为函数参数,后者为局部变景。那么我们可以从以下两个方面来理解这个问题:1、蓝皮书中提到过标准main函数的两种写法,在蓝皮书中main函数的的原型中argv实际是:cha

7、r**argv,但是类似于我们写的程序中char*argv□这种写法,gCC在编译时会右一个隐式转换,会将我们的这种写法自动转换为char**argv,但是这种写法一般会出现两种写法,要么就是编译器直接报错,要么就会给出warning信息,然后继续把它转换为Char**argv来使用。2、另一方面,C语言在函数传参的数组传递有些特殊,我们可以看下面的代码:MBn1{}Iiijp

8、onst*argv口)si*arr[]={","2","3"};printf(•gv=%x’,&argv,argv);printf(、gc=%x'&argc,argc);func(argv);},因为main函数是程序的入口函数,是被编译内部定义好的,所以可以再定义一个intfunc(char*v口),结果发

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。