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.cargc: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
-

浙公网安备 33010602011771号