24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1723  |  回复: 29

as23p

木虫 (小有名气)

引用回帖:
17楼: Originally posted by wangybcn at 2012-08-06 08:03:14
argc和argv和其它变量没有区别,唯一不同的是,它不需要声明,而是由编译器直接由main函数传入的实参。
argc和argv由编译器读入后,怎么处理就有程序本身完成。我觉得是其它语言干扰了你的思路,F语言比较死板,看 ...

另外还有个相关的有趣问题,不知你是否考虑过如果在main()的括号中给三个参数会是什么结果?如果你有兴趣的话不妨试试运行下面的代码:

#include
main(int argc, char *argv[], int suooo)
{
while(--argc)
  printf("%s%s\n",*++argv,(argc>1)?" ":"";
printf("suooo = %d\n",suooo);
return 0;
}

不知你能不能理解输出的结果。
PS:我在Linux下用intel的编译器编译这段代码是可以的,不知其他操作系统的其他编译器行不行。
21楼2012-08-06 13:16:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)

引用回帖:
21楼: Originally posted by as23p at 2012-08-06 13:16:18
另外还有个相关的有趣问题,不知你是否考虑过如果在main()的括号中给三个参数会是什么结果?如果你有兴趣的话不妨试试运行下面的代码:

#include <stdio.h>
main(int argc, char *argv[], int suooo)
{ ...

引号加右括号怎么变成表情了。。。
22楼2012-08-06 13:19:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

引用回帖:
16楼: Originally posted by as23p at 2012-08-06 01:22:13
你觉得我冤枉他了么?
我问的是变量初始化的问题。如果说是操作系统做的,就请讲讲操作系统是如何做到的。你看看他是什么态度,什么叫“微软是干嘛吃的”???净摆些不沾边的事,还什么“给你一个字符串,你不是也 ...

冤枉没冤枉明眼人一看就知道.

"如果说是操作系统做的,就请讲讲操作系统是如何做到的",我说了"dos也是一个程序好不好!!!",你自己也知道"如果想要word.exe正确解析参数,是需要将具体的原则写到代码里吧".我的“微软是干嘛吃的”就是告诉你,微软想要dos正确解析参数,已经将具体的原则写到代码里了.你理解不了说这不沾边,我无话可说.
正因为dos这个小子生下来不会数数,他家大人微软才教给它怎么数的.

不过给孩子除了教数数,最好也教点其他,免得耽误了.
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
23楼2012-08-06 17:04:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangybcn

禁虫 (正式写手)

本帖内容被屏蔽

24楼2012-08-06 18:55:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wangybcn

禁虫 (正式写手)

本帖内容被屏蔽

25楼2012-08-06 18:58:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)

引用回帖:
23楼: Originally posted by libralibra at 2012-08-06 17:04:51
冤枉没冤枉明眼人一看就知道.

"如果说是操作系统做的,就请讲讲操作系统是如何做到的",我说了"dos也是一个程序好不好!!!",你自己也知道"如果想要word.exe正确解析参数,是需要将具体的 ...

请你以后注意点自己的说话方式。我是来求助的,不是来吵架的,“**是干嘛吃的”这种话你在日常生活中随便对个人这么说你看他不抽你才怪。
此外,我其实不太相信是Dos做的这事情;当然我也不是很懂,你愿意具体说说Dos把原则写在哪个文件里了么?因为Dos说到底就是那三个系统文件,里头有关于C语言的内容?C代码在Dos下运行还是需要另外装编译器的不是么?
对于Windows也是一样需要额外的编译器,Linux倒是自带了编译器。
26楼2012-08-06 22:41:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)

引用回帖:
24楼: Originally posted by wangybcn at 2012-08-06 18:55:13
我记得c的第三个参数不是这样的
是操作系统的环境变量值...

这程序是我自己乱写的而已
27楼2012-08-06 22:42:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

引用回帖:
26楼: Originally posted by as23p at 2012-08-06 22:41:50
请你以后注意点自己的说话方式。我是来求助的,不是来吵架的,“**是干嘛吃的”这种话你在日常生活中随便对个人这么说你看他不抽你才怪。
此外,我其实不太相信是Dos做的这事情;当然我也不是很懂,你愿意具体说说 ...

没人来这是吵架的.我说微软是干嘛吃的意思是你问的这些处理用户输入方式的确已经被微软写dos(或许该叫ms-dos)的时候写好了.
DOS(MS-DOS)其实是个操作系统(跟后来的windows系列带用户界面的操作系统本质上没有区别):用户输入->操作系统处理->返回输出.在窗口系统下,用户输入比较广泛,鼠标移动,点击,键盘都可以看做用户输入,但是在dos时代,用户只能通过键盘敲命令来进行输入.至于怎么处理这些输入,操作系统编译好交付用户运行之前,已经确定好了.这就是为什么你输入dir会得到当前目录下的所有文件信息,dos接受了字符串"dir",而且dos定义了接受dir后的行为.

你输入"a.exe inputfile outputfile"这种格式的字符串给dos,它会用空格切割字符串来判断输入参数的个数,跟你自己写的任何一个exe程序没有区别.这个行为可以从dos命令(特别是第一个参数,可执行文件的绝对路径)不接受带空格的路径来验证.如果输入带空格,必须用引号两边引起来或者用\来进行转义输入,否则它会从空格处截断.判断可执行文件参数就会出问题,如果你将可执行文件所在文件夹加入path环境变量,dos会在path指定的一系列路径中找到这个可执行文件(exe.bat等),否则会出错.一个很简单的例子
下面这个会出错
CODE:
C:\>e:\te st\test.exe
'e:\te' is not recognized as an internal or external command,
operable program or batch file.

下面这个却可以运行
CODE:
C:\>"e:\te st\test.exe"

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
28楼2012-08-06 23:56:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)

引用回帖:
28楼: Originally posted by libralibra at 2012-08-06 23:56:52
没人来这是吵架的.我说微软是干嘛吃的意思是你问的这些处理用户输入方式的确已经被微软写dos(或许该叫ms-dos)的时候写好了.
DOS(MS-DOS)其实是个操作系统(跟后来的windows系列带用户界面的操作系统本质上没有区别 ...

可是我问的不是操作系统如何处理用户输入方式,而是问 argc 和 argv 的取值方式是在哪里被规定的?或者说明白点,argv 的内容事实上就是从外部设备键盘读入的,这一点是写在哪里(比如:哪个文件里)的?咱们自己的代码里只是定义了这两个变量,它们的取值方式没有被事先写在别处(如:库文件?)么?
29楼2012-08-07 00:33:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anntoy

木虫 (著名写手)

【答案】应助回帖

★ ★
as23p: 金币+2, 有帮助, 酱紫啊。。。 2012-08-07 22:33:09
引用回帖:
29楼: Originally posted by as23p at 2012-08-07 00:33:29
可是我问的不是操作系统如何处理用户输入方式,而是问 argc 和 argv 的取值方式是在哪里被规定的?或者说明白点,argv 的内容事实上就是从外部设备键盘读入的,这一点是写在哪里(比如:哪个文件里)的?咱们自己的 ...

哥,参数的传递是在栈里的,这个当然是系统先把参数压栈,然后转到main函数的入口了,你还是别深究这个问题了
30楼2012-08-07 13:09:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 as23p 的主题更新
信息提示
请填处理意见