23 main 函数与命令行参数
1 main 函数的概念
- C语言中
main
函数称之为主函数 - 一个C程序是从
main
函数开始执行的
2 main 函数的本质
main
函数是操作系统调用的函数- 操作系统总是将
main
函数作为应用程序的开始 - 操作系统将
main
函数的返回值作为程序的退出状态
3 main 函数的参数
-
程序执行时可以向
main
函数传递参数int main() int main(int argc) int main(int argc,char* argv[]) int main(int argc,char* argv[],char* env[]) argc
:命令行参数个数argv
:命令行参数数组env
:环境变量数组
-
gcc 编译器的常见用法
gcc a.c b.c c.c argc
:4argv[0]
:gccargv[1]
:a.cargv[2]
:b.cargv[3]
:c.c
-
main
函数的参数示例-
Demo
#include <stdio.h> int main(int argc, char* argv[], char* env[]) { int i = 0; printf("============== Begin argv ==============\n"); for(i=0; i<argc; i++){ printf("%s\n", argv[i]); } printf("============== End argv ==============\n"); printf("\n"); printf("\n"); printf("\n"); printf("============== Begin env ==============\n"); for(i=0; env[i]!=NULL; i++){ printf("%s\n", env[i]); } printf("============== End env ==============\n"); return 0; } -
编译
-
运行
-
-
main
函数一定是程序执行的第一个函数么?- 看情况:如果使用了 gcc 编译器的属性关键字,那么可以指定在 main 函数之前执行一个函数
-
gcc 中的属性关键字
-
Demo
#include <stdio.h> #ifndef __GNUC__ #define __attribute__(x) #endif //gcc属性关键字 __attribute__((constructor)) void before_main(){ printf("%s\n",__FUNCTION__); } __attribute__((destructor)) void after_main(){ printf("%s\n",__FUNCTION__); } int main() { printf("%s\n",__FUNCTION__); return 0; } -
编译
-
运行
before_main main after_main
-
本文作者:nxgy
本文链接:https://www.cnblogs.com/bky-hbq/p/13744672.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步