免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5247 | 回复: 9
打印 上一主题 下一主题

小问一下int main(int argc, char** argv)的疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-16 10:13 |只看该作者 |倒序浏览
我想问的是,带参数的main函数在编译后执行时,为什么实际带的参数中不能输入实参argc呢?
一般我们在调用函数的时候,不是都可以把所有的形参都赋值的么?

用个简单的例子代表一下我的困惑:
[root@localhost c]#
[root@localhost c]# cat ta.c

#include<stdio.h>
int main(int argc,char**argv)
{
int i;
for(i=0;i<=argc;i++)

printf("argv:%s\n",argv);

}

[root@localhost c]# gcc ta.c -o ta
[root@localhost c]# ./ta aa bb cc dd         //此处为什么不用加入int类型的实参就可运行呢?
argv:./ta
argv:aa
argv:bb
argv:cc
argv:dd
argvnull)
[root@localhost c]#
[root@localhost c]# ./ta 5 aa bb cc dd       //此处为什么我加了个5进去,反而被认为是个char型?
argv:./ta
argv:5
argv:aa
argv:bb
argv:cc
argv:dd
argvnull)
[root@localhost c]#
九片_cu 该用户已被删除
2 [报告]
发表于 2009-12-16 10:27 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2009-12-16 10:29 |只看该作者
原帖由 九片_cu 于 2009-12-16 10:27 发表
main 不是给你直接调用的,是CRT调用的


不太明呀,main为啥不给直接调用?CRT是什么?

论坛徽章:
1
黑曼巴
日期:2020-02-27 22:54:26
4 [报告]
发表于 2009-12-16 10:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2009-12-16 10:51 |只看该作者
APUE有讲
The C Programming Language 2nd. ed. 有讲
谭浩强/你老师 有讲,要不就找老师报仇去?

论坛徽章:
0
6 [报告]
发表于 2009-12-16 11:26 |只看该作者
在main()被调用前,系统对进程的栈做下面的设定。
其中的 Number of Parameters就是给argc, 从Program name 开始给了argv

论坛徽章:
0
7 [报告]
发表于 2009-12-16 12:34 |只看该作者
你这代码能跑出这结果我把电脑都给吞了

论坛徽章:
0
8 [报告]
发表于 2009-12-16 13:36 |只看该作者
原帖由 churchmice 于 2009-12-16 12:34 发表
你这代码能跑出这结果我把电脑都给吞了


呵呵,言重了,万一的话,我就成罪人了。

确实不小心贴漏代码了,修改一下:

#include<stdio.h>
int main(int argc,char**argv)
{
int i;
for(i=0;i<=argc;i++)

printf("argv:%s\n",argv[i]);
return 0;
}


[ 本帖最后由 jerichen 于 2009-12-16 13:53 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2009-12-16 13:42 |只看该作者
entry        :: [String] -> IO Int
entry args = do
    argv0 <- getProgramName
    main argc argv
    where argc = length args + 1
               argv = argv0 : ( args ++ NULL )

main               :: Int -> [String] -> IO Int
main argc argv = do
    blablabla
    return 0

你调用的实际上是 entry

论坛徽章:
0
10 [报告]
发表于 2009-12-16 16:06 |只看该作者

回复 #9 flw 的帖子

您这是Haskell?

范儿真大呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP