1. main函数的概念
C语言中main函数称之为主函数,一个C语言程序是从main函数开始执行。
main函数定义的标准形式:
int main()
{
return 0;
}
2. main函数的本质
(1)main函数是操作系统调用的函数;
(2)操作系统总是将main函数作为应用程序的开始;
(3)操作系统将main函数的返回值作为程序的退出状态。
3. main函数的参数
程序执行时可以相main函数传递参数:
int main()
int main(int argc) // int argc:操作系统调用main函数时写的命令行参数的个数
int main(int argc, char* argv[])//int argc:操作系统调用main函数时写的命令行参数的个数;char* argv[]:每个命令行参数保存在这个指针数组中
int main(int argc, char* argv[], char* env[])// int argc:操作系统调用main函数时写的命令行参数的个数;char* argv[]:每个命令行参数保存在这个指针数组中; char* env[]: 环境变量
gcc编译器的常见用法:
4. 问题: main函数一定是程序执行的第一个函数?
分析这个问题之前,先学习gcc中属性关键字。
#include <stdio.h>
#ifndef __GNUC__
#define __attribute__(x)
#endif
__attribute__((constructor))
void befor_main()
{
printf("%s\n", __FUNCTION__);
}
__attribute__((destructor))
void after_main()
{
printf("%s\n", __FUNCTION__);
}
int main()
{
printf("%s\n", __FUNCTION__);
return 0;
}
输出结果:
befor_main
main
after_main
回答问题:main函数一定是程序执行的第一个函数吗?
答案:不一定。在gcc编译器中由attribute属性关键字,调用这个属性关键字可以在main函数之前执行函数,如上示例程序所示;但在bcc编译期中没有attribute属性关键字,首先执行的是main函数。
5. 小结
(1) 一个C程序是从main函数开始执行的
(2) main函数是操作系统调用的函数
(3) main函数有参数和返回值
(4)现代编译器支持在main函数前调用其他函数