码迷,mamicode.com
首页 > 编程语言 > 详细

[ASM C/C++] C语言的 main 函数

时间:2015-01-27 00:14:04      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

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.

 参数argc 和 argv 代表程序的命令行自变量

 argc : argument count  值如果不是0,就是命令行中字符串的数量,程序本身名字也算在内。

 argv : argument vecto  一个char指针数组,每个指针指向命令行中的字符串。

 envp : 环境指针; 是一个指针数组,指向组成程序环境的字符串。C中可用getenv()函数取得这些环境变量。

#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 \n", argc, argv[0]);

    for(int i=1; i<argc; i++)
    {
        printf("the %d argument is: %s \n", i, argv[i]);
    }

    for(int i=0; envp[i] != \0; i++)
    {
        printf("the env argument is: %s \n", envp[i]);
    }

    // get the env argument
    char *env = getenv("USER");
    printf("%s \n", 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 


 

 

 

[ASM C/C++] C语言的 main 函数

标签:

原文地址:http://www.cnblogs.com/abeen/p/4251657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!