参考带命令行参数的main函数详解[转载]

http://www.cnblogs.com/xdshennju/archive/2012/01/23/2328992.html

一个C程序总是从main()函数开始执行的。

评:有的C程序压根就没有main()函数

在最新的 C99 标准中,只有以下两种定义方式是正确的:

 (参阅ISO/IEC 9899:1999 (E) 5.1.2.2.1 Program startup)

评:这个是对C99的误解。在C89中,“只有”这两个字才成立。C99并不绝对拒绝这两种外形式的main()

编译环境是TC

评:用这种C89之前的编译器来讨论C标准是扯淡。TC本身还容许main()带第3个参数懂不懂?

如果把 return 0; 改为 return 99;

评:C标准只谈到main()返回0或1,其他的情况由编译器确定。你这里返回99,问过编译器吗?

要是你这样写 return 99.99; 那还是返回99,因为99.99被传给操作系统之前,被强制类型转换成整数类型了。

评:和main()八竿子打不着的事情,返回类型为int的函数都是这样处理

C编译器允许main()函数没有参数,或者有两个参数(有些实现允许更多的参数,但这只是对标准的扩展)。这两个参数,一个是int类型,一个是字符串类型。

评:C99已经把这种扩展作为了标准,所以谈不上什么“只是对标准的扩展”。

“一个是字符串类型”:在C语言中根本就不存在字符串类型,C语言操作字符串是通过char *类型指针。把char **当作字符串类型,C语言还没入门吧?

系统使用空格把各个字符串格开。

评:无中生有,没有任何依据。

把程序本身的名字赋值给argv[0],接着,把最后的第一个字符串赋给argv[1]。

评:什么叫“程序本身的名字”?argv[0]实际上与具体的实现相关。

“最后的第一个”,这是话么?

argv[0]  ------>    c(程序名)  。

评:很难说这个是什么。

编译运行,打开命令行并输入d love.txt 回车。这样,打开d.c文件所在的目录,你会发现多了一个名为 love.txt 的文件,打开后里面的内容正是世界上说的最多的那句话。

love.txt 文件和d.c文件所在目录没有关系,d.c是源文件而不是可执行文件。love.txt应该是在系统当前目录下。

使用命令行参数的理由或许就是练习命令行用法,以备以后需要编写基于命令行的程序。还有一个好处是,不需要C环境就可以运行已经编译好的程序。

运行已经编译好的程序和是否使用命令行参数没有任何关系。

带命令行参数的main函数的误解[到处转载的垃圾]相关推荐

  1. c语言学习进阶-C语言带命令行参数的文件数据批量计算

    C语言带命令行参数的文件数据批量计算 (1)假设输入文件中的数据为多行整数,把数据文件命名为"InputData.txt",也可以命名为任意的文件名,尝试设计一个c 语言程序, 主 ...

  2. c语音学习进阶-C语言带命令行参数的程序设计

    C语言带命令行参数的程序设计 (1)深入理解并学习带命令行参数的程序设计方法,使用c 语言完成带命令行参数的科学计算程序,能从给定的任意文件名的文件当中输入数据,并能向给定的任意文件名的输出文件当中输 ...

  3. vs2013中带命令行参数的调试方法

    @VS2013带命令行参数的调试方法 在C++函数参数传递中,我们知道,main函数是演示C++程序如何向函数传递数组的好例子.一般来说,我们定义的大多main函数都只有空的形参列表: int mai ...

  4. python编写请求参数带文件_转载:如何编写一个带命令行参数的Python文件

    看到别人执行一个支持命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持命 ...

  5. main函数带命令行参数的使用

    假设程序编译后生成的可执行文件为mycal.exe..在命令行提示符下,通过在windows开始菜单执行cmd命令,出现:c:>,键入mycal 100+200 运行的结果为 300:键入myc ...

  6. 每日一测1(带命令行参数运行)

    怎么让程序带参数运行以便适应不同的测试环境? 命令行参数在程序中的配置位置是在项目-属性-启动选项-命令行参数里 可以通过Main方法传入命令行参数(控制台程序本身就已带), 传入一个string类型 ...

  7. python带命令行参数解析的文件遍历脚本(找出文件名长度大于某值的文件)

    背景 复制一个目录时,提示有个文件名太长未能复制成功,然后忘记是哪个了,现在要靠脚本把它找出来. 代码 #!/usr/bin/pythonimport getopt import os import ...

  8. 在c语言中命令行参数是什么,C语言命令行参数

    这是可能在命令行中的一些值传递给C程序执行.特别是从参数传入,而不是外界硬编码写入这些值到代码控制程序中,这些值被称为命令行参数,很多时候,它们对程序很重要. 命令行参数使用main()函数的参数,其 ...

  9. 【C 语言】数组 ( 指针数组用法 | 命令行参数处理 )

    文章目录 一.指针数组用法 ( 命令行参数处理 ) 二.完整代码示例 一.指针数组用法 ( 命令行参数处理 ) main 函数是 操作系统 与 应用程序 交互的入口 , main 函数的 char* ...

最新文章

  1. Java多线程闲聊(五):AQS
  2. IOS开发之----远程推送通知
  3. 手握价值70万录用书的程序员提离职,领导:你已升职成功,还走?
  4. container_of 用法解析
  5. HTML和CSS常见问题整理
  6. Sublime Text 的下载巨慢的问题,安装问题,html页面代码生成问题,代码提示问题 全都解决了【最完美的解决方案】
  7. 设置Java JDK的默认编码为UTF-8
  8. 日文邮件变成乱码解决方案
  9. 深入理解Mysql - 事务与锁原理
  10. MWC-电机、电池螺旋桨搭配
  11. php 解压 中文文件夹,如何把文件夹压缩为rar
  12. Spark Core实战:解析Tomcat日志
  13. Google广告中介(以MoPub广告接入为例)
  14. 台式计算机VGA线可以拔掉吗,电脑开机花屏拔掉vga线在插入又会清晰
  15. 柳如是,当得奇女子。
  16. MindManager:将excel转成思维导图
  17. PMP章节练习—项目经理的角色
  18. 51单片机(8051系列)最小系统图--内部时钟
  19. Java 9~Java 17主要更新了什么?
  20. 单片机断电记忆方法C语言,单片机实现具有掉电记忆功能的计时器

热门文章

  1. java mybatis狂神说sql_狂神说SpringBoot09:整合MyBatis
  2. Java学习_day009(oop):引用类型数组、继承的意义
  3. python创建文件os_Python之文件与目录操作(os、zipfile、tarfile、shutil)
  4. iOS12系统应用发送普通邮实现发送
  5. 网站截图工具EyeWitness
  6. Xamarin Android项目真机测试闪退
  7. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark
  8. 查询添加条件_035 JAVA-MySQL 约束、DML操作(增改删)、事务处理、查询数据
  9. 怎么判断膝关节错位_膝关节韧带损伤该如何处理——健康科普
  10. 灰色关联投影法python_python灰色关联算法(灰度关联算法)