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 \n", argc, argv[]); for(int i=; i<argc; i++)
{
printf("the %d argument is: %s \n", i, argv[i]);
} for(int i=; 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 函数的更多相关文章

  1. C语言的main函数到底该怎么写

    公众号[编程珠玑]:专注但不限于分享计算机编程基础,Linux,C语言,C++,Python,数据库等编程相关[原创]技术文章,号内包含大量经典电子书和视频学习资源.欢迎一起交流学习,一起修炼计算机“ ...

  2. C#语言基础 Main 函数中的输出输入

    C# 是一门面向对象的编程语言,保留了C  C++等等强大功能,但是它与 Java 非常相似,有许多强大的编程功能,它是微软(Microsoft)专门为.NET应用而开发的一门语言. 也就是人与计算机 ...

  3. linux中c语言编程main函数和参数

    linux下main函数的的标准调用函数的标准形式 int main(int char,char *argv[]) 在main函数的两个参数中,argc必须是整型变量,其是命令行的参数的数目,argv ...

  4. 详解C语言的main函数

    如图所示:#include<stdio.h>这是一个头文件,包含的是C程序运行的C语言的库函数,只有包含了相关的头文件,在程序中才能调用.stdio表示输入输出控制.printf():就是 ...

  5. C#语言基础 Main 函数中变量 整型

    在我们每次上网或者用电脑的时候,请输入你的xxx 或者你的名字(年龄/身高/学校/籍贯)是 在这里我们就要学到一些变量,就是不确定的东西 string a:   //赋予变量 a ="内容& ...

  6. Bran的内核开发教程(bkerndev)-04 创建main函数和链接C文件

    目录 创建main函数和链接C文件 PS: 下面是我自己写的 Win10安装gcc编译器 本节教程对应的Linux下的编译脚本 _main的问题 创建main函数和链接C文件   一般C语言使用mai ...

  7. C语言中main函数的参数

    转自:http://blog.csdn.net/cnctloveyu/article/details/3905720 我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实际上, ...

  8. Linux C编程--main函数参数解析

    我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这 ...

  9. c/c++中main函数参数讲解

    参考地址: http://blog.csdn.net/cnctloveyu/article/details/3905720 我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实 ...

随机推荐

  1. Hibernate 异常提示_1

    INFO: HHH000041: Configured SessionFactory: null九月 15, 2016 12:29:35 上午 org.hibernate.engine.jdbc.co ...

  2. oracle查询某个时间点的数据

    1. select * from emps as of timestamp to_Date('2015-12-11 14:00:00','yyyy-mm-dd hh24:mi:ss'),SQL语句是查 ...

  3. sql 中convert和cast区别

    SQL中的cast和convert的用法和区别 更多 来源:SQL学习浏览量: 学习标签: cast convert sql 本文导读:SQL中的cast 和convert都是用来将一种数据类型的表达 ...

  4. 快速查找和你聊天人的IP和具体的物理所在地址

    附言 : 对于中秋佳节没有回家也没有外出的我,亦然选择闭关.本来是打算把这个公众号作为测试号的.但是发现这个号已经有注册有一年多了,怪可惜的!所以就用来发些教程图文,供给大家共同学习,也对自己进行不定 ...

  5. getchar的利用

    /*以每行一个单词的形式打印其输入 */ getchar   putchar函数,是逐个打印和输入(逐个循环打印) #include <stdio.h> int main() { int ...

  6. Android Studio Jni 环境搭建

    第一步:NDK环境搭建,点击下图红色框区域查看NDK下载和环境配置 安照正常情况是很慢的或者无法下载成功的,这个时候可以去下载NDK压缩包进行解压.下面给出两个下载地址 (1)官网:http://we ...

  7. 滚动轮播效果,.net 没得混看来只能去写js 了

    <!DOCTYPE html> <html> <head> <title> 滚动图片 </title> <style type=&qu ...

  8. Java中的回调函数

    本例拿apache commons dbutils举例 回调函数: 回调是指在执行时,具体的封装处理工用由第三方的类来实现. 回调一般由两部分组成 1:调用类 - QueryRunner.实例类 2: ...

  9. form提交的几种方法

    一. form表单中有 type是submit类型的button,点击 submit,从而会post数据,引发回传. <form action="?" name=" ...

  10. 【转】CentOS系统中常用查看日志命令

    来源:http://www.centoscn.com/CentOS/help/2014/0310/2540.html Linux IDE RedHat 防火墙活动 .cat tail -f 日 志 文 ...