【C语言】main函数解析

embedded/2025/1/31 19:58:48/

一、前言

在学习编程的过程中,我们很早就接触到了main函数。在Linux系统中,当你运行一个可执行文件(例如 ./a.out)时,如果需要传入参数,就需要了解main函数的用法。本文将详细解析main函数的参数,并通过代码示例展示如何使用这些参数。

二、main函数解析

main函数的标准形式如下:

int main(int argc,char* argv[])

也可以写成

int main(int argc,char** argv)

通常我们更习惯使用第一种形式。

参数说明

  1. argc:表示程序运行时发送给main函数的命令行参数的个数(包括可执行程序以及传参)。
  2. argv[]:是字符指针数组,它的每个元素都是字符指针,指向命令行中每个参数的第一个字符。
  • argv[0]指向可执行程序。
  • argv[1]指向可执行程序后的第一个字符串。
  • argv[2]指向可执行程序后的第二个字符串 。
  • argv[3]指向可执行程序后的第三个字符串 。
  • argv[argc]为NULL。

三、代码示例

#include <stdio.h>int main(int argc,char *argv[])
{printf("argc = %d\n",argc);while(argc--){printf("argv = %s\n",*argv);argv++;}for(int i=0;i<argc;i++){printf("argv[%d]= %s\n",i, argv[i]);}return 1;
}

示例运行

假设编译出来的程序名为test,运行是传入一下参数:

./test 123 abc

输出结果

四、应用场景

通过main函数的参数,我们可以在运行程序时动态地传入参数。这在以下场景中非常有用:

  1. 运行时配置:通过命令行参数传递配置信息,例如日志级别、运行模式等。
  2. 启动其他进程:当通过代码启动另一个进程时,可以通过这种方式传递参数。

http://www.ppmy.cn/embedded/158438.html

相关文章

OpenAI的真正对手?DeepSeek-R1如何用强化学习重构LLM能力边界——DeepSeek-R1论文精读

2025年1月20日&#xff0c;DeepSeek-R1 发布&#xff0c;并同步开源模型权重。截至目前&#xff0c;DeepSeek 发布的 iOS 应用甚至超越了 ChatGPT 的官方应用&#xff0c;直接登顶 AppStore。 DeepSeek-R1 一经发布&#xff0c;各种资讯已经铺天盖地&#xff0c;那就让我们一起…

Vue.js 什么是 Composition API?

Vue.js 什么是 Composition API&#xff1f; 今天我们来聊聊 Vue 3 引入的一个重要特性&#xff1a;组合式 API&#xff08;Composition API&#xff09;。如果你曾在开发复杂的 Vue 组件时感到代码难以维护&#xff0c;那么组合式 API 可能正是你需要的工具。 什么是组合式 …

引入@Inject的依赖包

maven引入Inject的依赖包 在 Maven 项目中引入 Inject 注解所需的依赖包同样取决于你打算使用的依赖注入框架。以下是一些常见框架及其 Maven 依赖配置的示例&#xff1a; 1. Google Guice 如果你打算使用 Google Guice&#xff0c;你需要在 pom.xml 文件中添加 Guice 的依赖…

关于低代码技术架构的思考

我们经常会看到很多低代码系统的技术架构图&#xff0c;而且经常看不懂。是因为技术架构图没有画好&#xff0c;还是因为技术不够先进&#xff0c;有时候往往都不是。 比如下图&#xff1a; 一个开发者&#xff0c;看到的视角往往都是技术层面&#xff0c;你给用户讲React18、M…

剑指 Offer II 011. 0 和 1 个数相同的子数组

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20011.%200%20%E5%92%8C%201%20%E4%B8%AA%E6%95%B0%E7%9B%B8%E5%90%8C%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84/README.md 剑指 Offer II 011. 0 和 1 个数相同的子…

Jenkins下载 Maven、Allure 插件并且配置环境

文章目录 Jenkins在插件中心下载 maven、allure插件maven插件下载allure插件下载 配置maven、allure 往期推荐&#xff1a; 最新! 在 Linux上搭建Jenkins环境! Jenkins邮件通知的详细配置含邮件通知模板&#xff01; Jenkin配置企业微信通知 Jenkins在插件中心下载 maven、…

PostgreSQL图插件AGE

PostgreSQL图插件AGE Apache AGE是PostgreSQL的一个图插件&#xff0c;作为Apache的一个顶级项目目前备受关注。AGE是A Graph Extension的缩写&#xff0c;支持openCypher语言&#xff0c;本文关注下它的基础架构。 1、AGE中涉及的几个系统表 AGE中涉及几个重要的系统表&#x…

Windows11暂停自动更新

Windows11在设置页的暂停自动更新选项最大值只能设置为7天&#xff0c;我们通过修改注册表来实现永久暂停更新。 步骤一&#xff1a;打开注册表 按Win键打开Windows搜索界面&#xff0c;在搜索栏中输入Reg&#xff0c;选择注册表编辑器并打开。 步骤二&#xff1a;修改注册表…