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 

    
    
    
     
  • 相关阅读:
    Sunday算法
    砝码称重 洛谷 1441
    树秀于林风必摧之——线段树
    常用stl(c++)
    Vue 根组件,局部,全局组件 | 组件间通信,案例组件化
    Win下JDK的安装和简单使用教程
    ubuntu服务器远程连接xshell,putty,xftp的简单使用教程
    ubuntu下安装pdo和pdo_mysql扩展
    服务器和域名的简单个人认知
    对大一一年的总结和对大二的规划
  • 原文地址:https://www.cnblogs.com/abeen/p/4251657.html
Copyright © 2011-2022 走看看