C++-main函数与命令行参数

本文详细介绍了C语言中main函数的概念、本质、参数及其在程序中的作用,并通过实例展示了如何利用GCC属性关键字使main函数不作为程序执行的第一个函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、main函数的概念

  C语言中main函数称之为主函数 

  —个C程序是从main函数开始执行的 

下面的main函数定义正确吗?

//1
main(){

}

//2
void main(){

}
//3
int main(){

}
//4
int main(){
return 0;
}

  

2、main函数的本质

            main函数是操作系统调用的函数 

            操作系统总是将main函数作为应用程序的开始 

            操作系统将main函数的返回值作为程序的退出状态 

思考: 

            为什么C编译器支持那么多不同的main函数原型? 

            和C语言的发展有关

3、main函数的参数 

程序执行时可以向main函数传递参数

int main()

int main(int argc) // argc-命令行参数个数    

int main(int argc, char * argv[] ) //argv-命令行参数数组

int main(int argc, char * argv[], char *env[]) //env-环境变量数组

gcc编译器的常见用法:

  gcc a.c b.c c.c

  argc ----------------->   4

  argv[0]--------------->gcc

  argv[1]--------------->a.c

  argv[2]--------------->b.c

  argv[3]--------------->c.c

#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;  
}  

  

4、小技巧

面试中的小问题 

       main函数一定是程序执行的第一个函数吗?

  

#include <stdio.h>  
  
#ifndef __GNUC__  
#define __attribute__(x)   //如果不是gcc编译器,定义空宏,如果是gcc编译器直接删除
#endif  
  
__attribute__((constructor))  
void before_main()  
{   
    printf("%s\n",__FUNCTION__);  //gcc拓展宏代表函数名
}  
  
__attribute__((destructor))   
void after_main()  
{  
    printf("%s\n",__FUNCTION__);  
}  
  
int main()  
{  
    printf("%s\n",__FUNCTION__);  
      
    return 0;  
}  

  

BCC55会报错,不认识宏_FUNCTION_,但现代编译器很多已支持

所以若配合gcc属性关键字,main函数可以不是程序执行的第一个函数

9、小结

            —个C程序是从main函数开始执行的 

            main函数是操作系统调用的函数 

            main函数有参数和返回值 

            现代编译器支待在main函数前调用其它函数

转载于:https://www.cnblogs.com/lemaden/p/10194409.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值