main 函数是 C 程序的入口点, 不可或缺, 不可重复;
main 函数应返回一个整数值给操作系统, 返回 0 表示正常结束.
前面使用的 main 函数都是无参数的: int main(void);
main 可以有两个参数: int main(int argc, char *argv[]);
第一个是自动获取的参数数目(+1), 第二个是参数列表(字符串列表);
这一般用于控制台或 dos 下,
在 Windows 下我们双击文件名打开文件时, 该文件名(包括路径)也是通过这些参数传递的.
1. 获取 main 函数第一个参数的默认值:
它会是 1; 我们并没有给它参数呀? 原来它是把文件名当作第一个参数的.
#include <stdio.h> int main(int argc, char* argv[]) { printf("%d\n", argc); /* 1 */ getchar(); return 0; }
2. 获取第一个参数(也就是文件名):
#include <stdio.h> int main(int argc, char* argv[]) { printf("%s\n", argv[0]); getchar(); return 0; }
3. 给 main 函数建立并获取参数列表:
如果是在控制台或 dos 下, 在程序名后面输入就是了, 现在呢?
C++Builder 菜单 -> Run -> Parameters... -> 在 Parameters 输入测试参数(譬如: 11 22 33), 用空格隔开.
此对话框也可从 Project -> Project Options -> Debuger 进入.
#include <stdio.h> int main(int argc, char* argv[]) { int i; for (i = 1; i < argc; i++) { printf("%s\n", argv[i]); } printf("---\n"); while (--argc) { printf("%s\n", argv[argc]); } getchar(); return 0; }
4. 假如需要其他类型的参数:
main 的参数都是字符串的(或者说是字符指针的), 要使用其他类型的参数, 譬如 int、double 等, 只能转换.
#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { int I; long L; double D; I = atoi(argv[1]); /* 假定至少指定了一个参数 */ L = atol(argv[1]); D = atof(argv[1]); printf("%d, %ld, %g\n", I, L, D); getchar(); return 0; }
5. C++Builder 2009 中的 main 函数:
//标准的 main 函数: int main(int argc, char* argv[]) { return 0; } //C++Builder 2009 中的 main 函数: int _tmain(int argc, _TCHAR* argv[]) { return 0; } /* _tmain 是个 define, 在 tchar.h 中这样定义: #define _tmain main 程序在预处理阶段将会把它替换为: main _TCHAR 是重命名的 char 类型, 在 tchar.h 中这样定义: typedef char _TCHAR; 看来要想按照 C++Builder 2009 给的默认代码使用, 是离不开 tchar.h 的. C++Builder 2009 为什么要这样? 肯定有理由, 可我不知道. */
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2007-12-05 To Do 注释的运用
2007-12-05 Delphi 运行时错误信息表
2007-12-05 Delphi 编译错误信息表
2007-12-05 方法重载
2007-12-05 抽象类
2007-12-05 覆盖虚方法
2007-12-05 类方法调用