24小时热门版块排行榜    

查看: 1790  |  回复: 29
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

as23p

木虫 (小有名气)

[求助] 关于 argc 的值

刚接触C语言没多久,之前一直用Fortran,所以有个地方不太明白,希望大家赐教:
在C里经常用到诸如 int main(int argc, int *argv[]) 的语句,我的问题是参量argc的值是如何获得的呢?在Fortran里,所有的函数参量都是在调用该函数时被赋值的,但C里的main函数没有上级函数调用,实际应用中感觉argc是运行时自动就有值了(即,*argv[]的维数加一),可这到底是怎么做到的啊???听着好像是人工智能
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)

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

我之前是一直在用Fortran的,但我不认为我的问题是和Fortran有直接关系,而是人机交流的原则本应如此。因为机器是死的,没有学习和思考的能力,所以我们才需要自己初始化变量,告诉它哪个变量的值是什么或者应该从哪里去取值。既然argc和argv和其它变量没有区别,机器也还是那个机器,那么初始化的根本方法就应该是一样的啊?!
我知道 argc 的 argv[] 的内容是什么,但我想知道它们是在哪里被告知要如此取值的?
19楼2012-08-06 10:35:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 30 个回答

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

感谢参与,应助指数 +1
如果你这个函数编译完后叫test.exe
打开dos窗口运行时,输入(假设的): test.exe data.txt,那么argc==2,argv[0] = "test.exe", argv[1] = "data.txt",argc是命令行自动计算的,跟你的输入有关的.
一般写程序如果你明确知道你的函数在main中自动打开文件,读写/操作...,main函数可以无参数
int main()
{
...
}
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2012-08-03 16:06:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)

引用回帖:
2楼: Originally posted by libralibra at 2012-08-03 16:06:18
如果你这个函数编译完后叫test.exe
打开dos窗口运行时,输入(假设的): test.exe data.txt,那么argc==2,argv = "test.exe", argv = "data.txt",argc是命令行自动计算的,跟你的输入有关的.
一般 ...

我知道argc是自动计算的,我就是想知道它为什么能自己自动计算,是人工智能么???
3楼2012-08-04 00:14:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

引用回帖:
3楼: Originally posted by as23p at 2012-08-04 00:14:54
我知道argc是自动计算的,我就是想知道它为什么能自己自动计算,是人工智能么???...

给你一个字符串,你不是也能切割知道有几个空格分隔的子串吗?
控制台也不过是操作系统对于用户的一个接口啊,你运行程序输入的那行命令不就是个长串吗?它接收后按照空格切割一下,个数赋值给argc,子串存在argv[]啊
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2012-08-04 05:07:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见