LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 951|回复: 7

main(int agrv, char **agrv)还是不很明白

[复制链接]
发表于 2004-9-1 10:01:20 | 显示全部楼层 |阅读模式
这篇帖子看过了
http://www.linuxsir.cn/forum.php ... 15&pagenumber=1
还是有些地方不很明白
变量argc和*argv是如何被赋值的。他们之间是否有什么关系?
发表于 2004-9-1 12:04:54 | 显示全部楼层
argc是命令行参数的个数,argv保存这些参数
这个是系统运行一个程序的时候做的
 楼主| 发表于 2004-9-1 14:58:49 | 显示全部楼层
是不是可以这样理解:
一个程序假如为prog,运行时用了3个参数,这样
  1. prog aa bb cc
复制代码


aa bb cc在内存中排列成一个字符串数组,**argv指向这个数组的首地址。

如果这么理解没有错误的话,那么程序在什么时候给这个数组分配地址呢?书上看到的例程没有涉及到分配地址。是不是在编译的时候编译起分配?如果是编译器来分配,那么分配的地址空间多大呢?
发表于 2004-9-1 15:31:08 | 显示全部楼层
"aa""bb""bb"每个都是一个字符串
argv是它们的首地址
这个空间是运行的时候系统分配的
 楼主| 发表于 2004-9-1 15:32:50 | 显示全部楼层
那空间分配的大小如何决定?
发表于 2004-9-1 15:36:46 | 显示全部楼层
环境变量有多大,是设计操作系统的时候就决定了的
当然通常设计会考虑到用户需求,是可以按照需要多分配一些的
发表于 2004-9-2 21:42:33 | 显示全部楼层
找资料看看进程是如何产生及exec系列系统调用就全明白了。
 楼主| 发表于 2004-9-2 22:02:40 | 显示全部楼层
恩,系统调用在下一章,周末就能看到了,嘿嘿
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表