33_main函数与命令行参数

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编译器的常见用法:


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函数前调用其他函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容