[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 \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 函数的更多相关文章
- C语言的main函数到底该怎么写
公众号[编程珠玑]:专注但不限于分享计算机编程基础,Linux,C语言,C++,Python,数据库等编程相关[原创]技术文章,号内包含大量经典电子书和视频学习资源.欢迎一起交流学习,一起修炼计算机“ ...
- C#语言基础 Main 函数中的输出输入
C# 是一门面向对象的编程语言,保留了C C++等等强大功能,但是它与 Java 非常相似,有许多强大的编程功能,它是微软(Microsoft)专门为.NET应用而开发的一门语言. 也就是人与计算机 ...
- linux中c语言编程main函数和参数
linux下main函数的的标准调用函数的标准形式 int main(int char,char *argv[]) 在main函数的两个参数中,argc必须是整型变量,其是命令行的参数的数目,argv ...
- 详解C语言的main函数
如图所示:#include<stdio.h>这是一个头文件,包含的是C程序运行的C语言的库函数,只有包含了相关的头文件,在程序中才能调用.stdio表示输入输出控制.printf():就是 ...
- C#语言基础 Main 函数中变量 整型
在我们每次上网或者用电脑的时候,请输入你的xxx 或者你的名字(年龄/身高/学校/籍贯)是 在这里我们就要学到一些变量,就是不确定的东西 string a: //赋予变量 a ="内容& ...
- Bran的内核开发教程(bkerndev)-04 创建main函数和链接C文件
目录 创建main函数和链接C文件 PS: 下面是我自己写的 Win10安装gcc编译器 本节教程对应的Linux下的编译脚本 _main的问题 创建main函数和链接C文件 一般C语言使用mai ...
- C语言中main函数的参数
转自:http://blog.csdn.net/cnctloveyu/article/details/3905720 我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实际上, ...
- Linux C编程--main函数参数解析
我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这 ...
- c/c++中main函数参数讲解
参考地址: http://blog.csdn.net/cnctloveyu/article/details/3905720 我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实 ...
随机推荐
- Sourceinsight最佳配色方案及颜色字体调整方法
在Ubuntu下面用Gedit有一款比较好看的配色,应该是Darkblue.按照那个样子在SI里面做了一个差不多的,按个人喜好,背景色换成黑色,如下所示: 配色的方案文件可以从此处链接免费下载: 配色 ...
- 转摘 MySQL扫盲篇
一下文章摘自:http://www.jellythink.com/archives/636 MySQL扫盲篇 2014-09-15 分类:MySQL / 数据库 阅读(1412) 评论(1) 为什么 ...
- Quoit Design---hdu1007(最近点对问题 分治法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意:给你n(2<=n<=10^6)个点的坐标,然后找到两个点使得他们之间的距离最小 ...
- 解决警告“ld: warning: directory not found for option
因为已经把文件编译到项目中,删除的话会出现找不到文件或文件夹的警告. 1选择工程, 编译的 (targets) 2选择 Build Settings 菜单 3查找 Library Search Pat ...
- Python开发【十一章】:数据库操作Memcache、Redis
一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...
- 异常:java.io.IOException: Too many open files:
原因: 操作系统的中打开文件的最大句柄数受限所致,常常发生在很多个并发用户访问服务器的时候.因为为了执行每个用户的应用服务器都要加载很多文件(new一个socket就需要一个文件句柄),这就会导致打开 ...
- logstash插件
codec 插件 goeip插件 input { file { path => ["/data/nginx/logs/access.log"] type =>&qu ...
- 解读ContentResolver和ContentProvider
转自:http://cthhqu.blog.51cto.com/7598297/1281217 1. ContentProvider的概述 ContentProvider: (Official Def ...
- redis 五种数据类型的使用场景
String 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...
- 关于sigwait
刚开始看sigwait函数,只是知道它是用来解除阻塞的信号,可是使我疑惑的是那么解除了以后为什么线程收到终止信号SIGINT的时候还是没能终止呢? 于是网上找了一些资料,总的理解如下所示: sig ...