【C语言】09-深入解析main函数
作者简介Nebula嵌入式 | 嵌入式软件工程师技术背景22届普通二本院校毕业生专注于嵌入式软件开发MCU/RTOS/Linux应用/Linux驱动开发 持续学习中内容创作小红书、抖音、B站同名账号分享嵌入式知识和日常工作欢迎关注商务合作/需要学习资料联系️nebula0419备注商务合作/学习资料修订记录版本修改时间修改内容1.02023.4.6初稿main 与 argc/argv2.02024.5.21补充命令行传参场景说明3.02026.3.1优化排版4.02026.7.30修正 argc 遍历示例、补充小结4.12026.8.1细化 argc/argv 布局与遍历注意点补强退出码与应用场景说明一、前言在 C 语言学习与开发中main是宿主环境hosted environment如 Linux/Windows 用户态程序下程序的入口。独立环境freestanding常见于裸机启动可能没有标准main由启动文件跳到自定义入口本文以常见的 Linux / 桌面 C 程序为主。本文将从语法格式、声明形式、argc/argv细节入手结合可运行示例说明命令行参数的用法。读图要点宿主环境Linux/桌面入口是main裸机 freestanding 常由启动文件跳到自定义入口。本文以常见main为主MCU 工程以启动文件与链接脚本为准。二、main 函数的语法格式读图要点返回int0成功非 0 错误可供脚本读取。argc含程序名argv是指针数组且argv[argc] NULL。int main(int argc, char *argv[]) { return 0; }核心要素返回值类型int。在 Linux 中返回0表示正常退出非 0 表示错误可由调用方或脚本读取。argcargument count命令行参数个数含程序名本身。argvargument vector指向参数字符串的指针数组argv[argc]为NULL。三、main 函数声明读图要点无参用int main(void)收参用char *argv[]或等价的char **argv。不要写int main()在 C 中表示参数未指定规范性差。形式一不接收命令行参数int main(void) { return 0; }建议使用int main(void)不要写int main()——后者在 C 中表示参数列表未指定可读性与规范性较差。形式二接收命令行参数两种等价写法int main(int argc, char *argv[]) { return 0; } int main(int argc, char **argv) { return 0; }四、参数说明读图要点./test 123 abc→argc3argv[0]程序名其后为用户参数末尾NULL。自定义参数个数 argc - 1有效下标0 ~ argc-1。参数 / 用法说明argc参数个数至少为 1程序名argv[0]通常为程序路径或名称argv[1] … argv[argc-1]用户传入的参数argv[argc]固定为NULL自定义参数个数 argc - 1有效下标为0 ~ argc-1。五、代码示例读图要点推荐for (i 0; i argc; i)或走到argv[i] NULL。不要先while (argc--)再按下标用已被改掉的argc若要递减另存副本。下面用下标遍历打印参数推荐写法。不要先while (argc--)再按argc循环——前者会改掉argc后者就会失效。#include stdio.h int main(int argc, char *argv[]) { int i; printf(argc %d\n, argc); for (i 0; i argc; i) { printf(argv[%d] %s\n, i, argv[i]); } /* 也可写到 argv[argc]NULL 为止 */ for (i 0; argv[i] ! NULL; i) { printf(via NULL: argv[%d] %s\n, i, argv[i]); } return 0; /* 0 表示成功退出 */ }编译并运行假设可执行文件名为test./test 123 abc此时argc为 3对应./test、123、abc。若要边走边减计数应另存副本且与下标循环二选一即可int n argc; char **p argv; while (n--) { printf(%s\n, *p); }六、应用场景读图要点常见用途运行时配置、exec传参、批量任务区间。argv元素都是字符串数值需自行strtol/atoi并做校验。6.1 运行时动态配置无需改代码重编译即可切换行为例如日志级别./app debug/./app info运行模式./server tcp/./server udp文件路径./read_file /home/data.txt6.2 进程启动传参父进程通过exec系列函数启动子进程时可把参数写入子进程的argv完成简单配置传递。6.3 批量任务例如./process_data 100 200表示处理区间提高复用性。七、小结读图要点return 0或exit(0)表示成功非 0 表示错误便于脚本与自动化检测。错误码尽量语义明确不要随意返回随意整数。宿主环境下用int main(void)或int main(int argc, char *argv[])。argc含程序名argv[argc]为NULL成功退出返回0。遍历参数用下标或argv[i] ! NULL避免先破坏argc再循环。嵌入式裸机可能没有标准main以启动文件与链接脚本为准。

相关新闻

长沙中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖芙蓉/雨花/岳麓/天心/开福等全域各区 专治不制冷/漏水/异响/跳闸

长沙中央空调维修-欧米到家金牌师傅全城区30分钟火速上门覆盖芙蓉/雨花/岳麓/天心/开福等全域各区 专治不制冷/漏水/异响/跳闸

在长沙,中央空调突发故障是家庭、商铺与写字楼的高频烦心事——中央空调不制冷、内机漏水、外机异响跳闸、开机没反应等问题,往往在盛夏高温、回南天潮湿时节集中爆发。很多用户会搜索“长沙中央空调维修”“长沙附近中央空调上门师傅”“长沙中央空调漏…

2026/8/2 7:38:22 阅读更多 →
SSDTTime黑苹果配置终极指南:一键生成DSDT补丁的完整教程

SSDTTime黑苹果配置终极指南:一键生成DSDT补丁的完整教程

SSDTTime黑苹果配置终极指南:一键生成DSDT补丁的完整教程 【免费下载链接】SSDTTime SSDT/DSDT hotpatch attempts. 项目地址: https://gitcode.com/gh_mirrors/ss/SSDTTime 你是否在为黑苹果配置中的ACPI补丁问题而烦恼?面对复杂的DSDT和SSDT补丁…

2026/8/2 7:38:22 阅读更多 →
分布式系统时钟精度:Accuracy、Tolerance与Jitter的深度解析与实战优化

分布式系统时钟精度:Accuracy、Tolerance与Jitter的深度解析与实战优化

1. 从一次线上故障说起:为什么时钟的“准”与“不稳”如此致命? 去年,我们团队负责的一个分布式实时数据处理系统,在业务高峰期突然出现了大量数据乱序和重复计算的问题。监控大盘上,各个节点的处理延迟曲线像心电图一…

2026/8/2 7:37:22 阅读更多 →

最新新闻

OpenAI高层变动对API生态影响:开发者如何应对技术架构风险

OpenAI高层变动对API生态影响:开发者如何应对技术架构风险

1. 风暴中心:一次意料之外又情理之中的权力更迭 如果你今天打开社交媒体或者科技新闻网站,大概率会被一条消息刷屏:OpenAI,这家站在人工智能浪潮最前沿的公司,刚刚经历了一场高层地震。联合创始人兼总裁格雷格布罗克曼…

2026/8/2 8:17:40 阅读更多 →
WinForm异步编程实战:async/await解决UI卡顿与线程阻塞

WinForm异步编程实战:async/await解决UI卡顿与线程阻塞

1. 项目概述:为什么WinForm开发者必须掌握async/await? 如果你是一位长期奋战在WinForm桌面应用开发一线的C#程序员,可能经历过这样的场景:用户点击一个“加载数据”按钮,界面瞬间卡死,鼠标变成沙漏&#x…

2026/8/2 8:17:40 阅读更多 →
从零自制手持无刷暴力风扇:Arduino控制与锂电池供电实战

从零自制手持无刷暴力风扇:Arduino控制与锂电池供电实战

最近在折腾一些小型电子制作项目,发现网上关于DIY强力风扇的教程要么太零散,要么只讲理论。正好手头有一些闲置的无刷电机和锂电池,就想着自己动手做一个“手持无刷暴力风扇”。这玩意儿风力猛、续航久,夏天户外或者工作室通风都特…

2026/8/2 8:17:40 阅读更多 →
OpenAI GPT-5.6 API降价:开发者如何优化成本与架构决策

OpenAI GPT-5.6 API降价:开发者如何优化成本与架构决策

如果你正在用 OpenAI 的 API 开发应用,或者正在评估大模型服务的成本,那么最近的一条消息绝对值得你停下来仔细算一笔账:OpenAI 宣布下调其 GPT-5.6 系列模型的 API 价格。 这不仅仅是一次简单的“促销”。对于开发者而言,它传递…

2026/8/2 8:17:40 阅读更多 →
企业AI智能体落地指南:从工具到生产力的关键路径

企业AI智能体落地指南:从工具到生产力的关键路径

在过去的两年时间当中, AI智能体, 也就是AI Agent, 从一个技术方面的概念, 快速地演变成了企业数字化转型过程里的高频词汇。它跟传统的自动化脚本或者聊天机器人不一样, AI智能体拥有感知环境的能力, 还有自主决策以及执行任务的能力, 它可以调用内部系统, 可以处理非结构化数…

2026/8/2 8:17:40 阅读更多 →
Unity UGUI聊天框自适应布局:告别强制刷新,实现高性能UI

Unity UGUI聊天框自适应布局:告别强制刷新,实现高性能UI

1. 项目概述:为什么聊天框自适应是个“老大难”? 做Unity UI开发,尤其是社交、MMO这类带聊天系统的项目,最让人头疼的UI组件之一,恐怕就是聊天框了。你肯定遇到过这种情况:精心设计好的气泡背景图&#xff…

2026/8/2 8:16:40 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →