zoukankan      html  css  js  c++  java
  • [ASM C/C++] C语言的main 函数

    C语言有两种可能的运行环境

    1. 独立(freestanding)

    在独立环境中,C程序执行不需要操作系统的支持,因此只具有最小的链接库能力。

    2. 宿主(hosted)

    在宿主的环境中,C程序会在操作系统的控制下执行,并且会使用操作系统所提供的支持,具有完整的标准链接库能力。

    为宿主环境而编译的程序必须定义一个名为main的函数,这是程序开始时调用的第一个函数。

    main 函数的定义有两种形式:

    int main(void){} // 没有参数, 返回int.

    int main(int argc, char *argv[]){} // 两个参数,返回int .

    另外许多C的实现还支持以下定义

    int main(int argc, char *argv[], char *envp[]) //三个参数,一个int,两个char **, 返回int.

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <stdarg.h>
    
    
    /*  参数argc 和 argv 代表程序的命令行自变量
        argc : argument count  值如果不是0,就是命令行中字符串的数量,程序本身名字也算在内。
        argv : argument vecto  一个char指针数组,每个指针指向命令行中的字符串。
        envp : 环境指针; 是一个指针数组,指向组成程序环境的字符串。C中可用getenv()函数取得这些环境变量。
    */
    int main(int argc, char *argv[], char *envp[])
    {
        printf("argument count is: %d  %s 
    ", argc, argv[0]);
    
        for(int i=1; i<argc; i++)
        {
            printf("the %d argument is: %s 
    ", i, argv[i]);
        }
    
        for(int i=0; envp[i] != ''; i++)
        {
            printf("the env argument is: %s 
    ", envp[i]);
        }
    
        // get the env argument
        char *env = getenv("USER");
        printf("%s 
    ", env);
    }

    执行结果:

    mac-abeen:asm_c abeen$ gcc arg.c 

    
    

    mac-abeen:asm_c abeen$ ./a.out

    
    

    argument count is: 1  ./a.out 

    
    

    the env argument is: TERM_PROGRAM=Apple_Terminal 

    
    

    the env argument is: SHELL=/bin/bash 

    ......

    abeen 

    
    
    
     
  • 相关阅读:
    nginx+tomcat实现动静分离
    redis主从配置+哨兵模式
    字符串去重
    MySql数据库笔试题总结
    ElasticSearch入门 第一篇:Windows下安装ElasticSearch
    Java NIO 读取文件、写入文件、读取写入混合
    Java NIO 与 IO之间的区别
    第2章 Python基础-字符编码&数据类型 综合 练习题
    第2章 Python基础-字符编码&数据类型 字典 练习题
    第2章 Python基础-字符编码&数据类型 列表&元祖 练习题
  • 原文地址:https://www.cnblogs.com/abeen/p/4251657.html
Copyright © 2011-2022 走看看