C语言编程入门 – main()函数

C语言编程入门 – main()函数

C Programming Language Essentials - main() function

By Jackson@ML

初见C语言,总被一个全球闻名的”Hello, world!”打印输出所惊讶。

1. 开启Hello, world!的C程序

代码如下:

# include <stdio.h>
int main(void)
{printf("Hello, world!");return 0;
}

用gcc编译及运行结果如下图:

在这里插入图片描述
通常来讲,main函数被称为C/C++语言的重要组成部分,并且它也是C语言程序的入口,程序的执行从这里开始。

基于通识,我们不再质疑为什么非要写个main函数,而是按部就班地去做 – 反正能编译运行就得了。

但仔细看看,就越来越不明白了。

2. 首先,为什么要用int类型放在main()函数前面?

听老师解释,这很简单,返回值是整型,所以要用int。那么,如果不是整形呢?该怎么办?

与其一味听从惯例,不如剖析一下main函数。可不可以把main函数这样来写呢?

return_type main() {// program statement 1;// program statement 2;return;
}

或者,把不相干的空格和换行去掉,这样写怎么样?

int main() { }

再或者,仍把void放进main(),表示不接受任何信息,这样写呢?

int main(void) { }

事实证明,这样的形式,编译器接受。(当然,还需要必要的内容)

3. main()函数既然是函数,如何被用户调用呢?

我们看到的程序示例,似乎只有两大类,

  • 一类main函数返回整型(例如,函数体最后的语句return 0; );
  • 另一类不返回值(例如,void main()).

事实上,关于main函数,有几个重要特点:

1) main()函数是程序开始执行的函数;
2) 每个程序都仅有一个main()函数;
3) 程序的主函数为main(), 而不是其它名称;
4) Main()函数始终返回整型(int)或没有返回类型(void).
5) Main函数编译时,就决定了由操作系统调用,而不是被用户来调用。

4. main()函数看起来有三种类型:

1) 不参数但返回类型为int的main函数;

说明该函数返回整型,但不传递参数,如下代码:

# include <stdio.h>
int main(void)
{printf("Hello, world!");return 0;
}

运行结果为:

Hello, world!

2) 不带参数也没有返回类型的main函数;

说明main函数不返回值,也不传递参数。如下代码:

# include <stdio.h>
void main()
{printf("Hello, world!");    
}

运行结果为:

Hello,world!

3) 带有命令行参数的main函数。

在下面的示例中,向main()函数传递参数。这些参数成为命令行参数,预先不写入程序,,而是在编译完运行时给出,使得程序运行。其中:

  • 第一个参数argc1表示计数,它存储命令行传递参数的个数;默认情况下,当没有传递参数时,它的值为1;
  • 第二个参数argc2是一个指针数组argv[ ], 它存储了所有传递的命令行参数。在输出中也可以看到,在不传递任何命令行参数的情况下运行程序时,argc的值为1。
    代码如下所示:
# include <stdio.h>
int main(int argc, char* argv[])
{printf("Value of argc is %d\n", argc);for (int i = 0; i < argc; i++ ){printf("%s \n", argv[i]);}
}

将该C程序文件命名为argc.c, 执行编译:

gcc argc.c

之后,执行带参数的运行命令:

./argc.exe Welcome Greetings Prosperity

运行结果如下图:

在这里插入图片描述
以上简要介绍了main()函数在C程序中的应用。

后续有技术好文不断推出。敬请关注。😃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310830.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<JavaEE> TCP 的通信机制(四) -- 流量控制 和 拥塞控制

目录 TCP的通信机制的核心特性 五、流量控制 1&#xff09;什么是“流量控制”&#xff1f; 2&#xff09;如何做到“流量控制”&#xff1f; 3&#xff09;“流量控制”的作用 六、拥塞控制 1&#xff09;什么是“拥塞控制”&#xff1f; 2&#xff09;如何做到“拥塞…

OSPF的DR与BDR-新版(16)

目录 整体拓扑 操作步骤 1.基本配置 1.1 配置R1的IP 1.2 配置R2的IP 1.3 配置R3的IP 1.4 配置R4的IP 1.5 检测R1与R4连通性 1.6 检测R1与R2连通性 1.7 检测R1与R3连通性 2.搭建基本的OSPF网络 2.1 配置R1 OSPF 2.2 配置R2 OSPF 2.3 配置R3 OSPF 2.4 配置R4 OSPF…

Python+OpenGL绘制3D模型(九)完善插件功能: 矩阵,材质,法线

系列文章 一、逆向工程 Sketchup 逆向工程&#xff08;一&#xff09;破解.skp文件数据结构 Sketchup 逆向工程&#xff08;二&#xff09;分析三维模型数据结构 Sketchup 逆向工程&#xff08;三&#xff09;软件逆向工程从何处入手 Sketchup 逆向工程&#xff08;四&#xf…

免费的云服务器推荐~三丰云

对于许多初创企业和小型公司来说&#xff0c;寻找一个经济实惠且可靠的云服务提供商是至关重要的。在这方面&#xff0c;三丰云以其免费虚拟主机和云服务器吸引了大量用户。 1. 注册与界面 注册三丰云的账户过程简单明了&#xff0c;只需按照步骤填写必要信息即可。其界面设计…

C语言中灵活多变的动态内存,malloc函数 free函数 calloc函数 realloc函数

文章目录 &#x1f680;前言&#x1f680;管理动态内存的函数✈️malloc函数✈️free函数✈️calloc函数✈️realloc函数 &#x1f680;在使用动态内存函数时的常见错误✈️对NULL指针的解引用✈️ 对动态开辟空间的越界访问✈️对非动态开辟内存使用free释放✈️使用free释放一…

力扣:62. 不同路径(动态规划,附python二维数组的定义)

题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

计算机组成原理复习5

总线结构与控制 文章目录 总线结构与控制总线结构单总线结构双总线结构三总线结构四总线结构 总线控制判优控制&#xff08;仲裁逻辑&#xff09;链式查询方式计数器定时查询独立请求方式 通信控制同步通信异步通信两种传输率的异步串行传送字符格式 总线结构 单总线结构 单总…

2023年03月20日_对李开复3月20日线下媒体会的解读

最近这个AI大模型 因为GPT4.0 ChatGPT 文心一言等等这些事情呢 一下子就被推到了风口浪尖 我们也做了来介绍相关的进展 国内呢也不断有一些大佬开始下场 包括王慧文、张朝阳、李彦宏什么的 都开始说自己要搞AI大模型 就在昨天呢 创新工厂的董事长兼CEO李开复 也发朋友…

MATLAB | 一起来绘制一款元旦特别款烟花叭~

新的一年就要到了&#xff0c;祝大家元旦快乐&#xff0c;新的一年里顺风顺水顺财神&#xff0c;文章投的都中&#xff0c;奖金基金kuku申请成功&#xff0c;今天带来一款完成度比较高的烟花代码&#xff0c;带字幕特效&#xff0c;为新的一年接风洗尘~&#xff1a; 文字都是可…

微软推出iOS 版Copilot App 让你免费用GPT-4

微软几天前在Android 平台推出独立的Copilot App 后&#xff0c;很快地又推出了适用于iOS 和iPad 本版的Copilot App&#xff0c;现在已经于苹果的App Store 上架&#xff0c;让iPhone 和iPad 使用者也能快速接触到这款人工智慧助手&#xff0c;通过输入查询来获得由OpenAI 的G…

[LLM]大模型训练(三)--DeepSpeed-Train

安装DeepSpeed与集成 pip install deepspeed DeepSpeed与HuggingFace Transformers直接集成。使用者可以通过在模型训练命令中加入简单的 --deepspeed 标志和配置文件&#xff0c;来轻松加速模型训练。 编写DeepSpeed模型 DeepSpeed模型训练的核心是什么&#xff1f;它如何处…