入门系列:基础认知——main函数参数说明
说明:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
QQ 群 号:513683159 【相互学习】
内容来源:
main函数的参数详解
main函数的的两个参数
main函数
一、概念
main函数,又称主函数,是程序执行的起点,也是终点。有且仅有一个。
C语言规定main函数函数形参有两个:
①argc
:参数计数器,整型变量 ,表示参数的个数.
②argv
:参数数组本身,指向字符串的指针数组,表示存放参数的具体内容.【参数表】
【注意】:argv[0]保存自身运行的目录路径和程序名,从argv[1]开始才是指向对应的参数
故main函数一般写为:
int main (int argc,char *argv[]){…}
int main (int argc,char **argv){…}
二、实践
#include<stdio.h>int main(int argc,char**argv)
{int i;printf("argc = %d\n",argc);for(i = 0 ; i < argc ;i++){printf("argv[%d]=%s\n",i,argv[i]);}return 0;
}
①编译程序:gcc main.c -o main
②运行程序:./main
,可得:
argc = 1
argv[0]=./main
③运行程序并添加参数:./main para1 para2 para3
argc = 4
argv[0]=./main
argv[1]=para1
argv[2]=para2
argv[3]=para3
三、main函数第三个参数,一般不使用
每个程序都会接收到一张环境表,也是一个字符指针数组(包含null结束)。
这也是main函数的第三个参数:envp
环境指针。(格式为:name = value)
具体可查看以下示例及结果:
#include<stdio.h>int main(int argc,char*argv[],char *envp[])
{int i;printf("argc = %d\n", argc);for(i = 0 ; i < argc ;i++){printf("argv[%d]=%s\n",i,argv[i]);}for(i = 0 ; envp != NULL ; i++){printf("%d %s\n",i,envp[i]);}return 0;
}
argc = 1
argv[0]=./test
0 SHELL=/bin/bash
1 SESSION_MANAGER=local/computer:@/tmp/.ICE-unix/1738,unix/computer:/tmp/.ICE-unix/1738
2 QT_ACCESSIBILITY=1
3 COLORTERM=truecolor
4 XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
5 XDG_MENU_PREFIX=gnome-
6 GNOME_DESKTOP_SESSION_ID=this-is-deprecated
7 LC_ADDRESS=zh_CN.UTF-8
...
四、环境变量
#include<stdio.h>int main(int argc,char*argv[])
{char **ptr;extern char **environ;for(ptr = environ ; *ptr != 0 ; ptr++){printf("%s\n",*ptr);}return 0;
}
$: gcc test.c -o test
$: ./test
SHELL=/bin/bash
...
入门系列:基础认知——main函数参数说明相关推荐
- Eggjs入门系列-基础全面讲解(完结)
对上篇文章回顾下,上篇讲到了 服务(Service) 插件 定时任务 框架扩展 启动自定义 应用部署 日志 HttpClient Cookie 与 Session Cookie 通过 ctx.cook ...
- [C/C++基础知识] main函数的参数argc和argv
该篇文章主要是关于C++\C语言最基础的main函数的参数知识,是学习C++或C语言都必备的知识点.不知道你是否知道该知识?希望对大家有所帮助. 一.main()函数参数 通常我们在写主函数时都是vo ...
- java基础9 main函数、this、static、super、final、instanceof 关键字
一.main函数详解 1.public:公共的.权限是最大的,在任何情况都可以访问 原因:为了保证jvm在任何情况下都可以访问到main法 2.static:静态,静态可以让jvm调用更方便,不需 ...
- Spark Core快速入门系列(5) | RDD 中函数的传递
大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- Eggjs入门系列-基础全面讲解(中)
回顾一下上篇讲到的内容,上篇讲了: 执行流程分析 目录结构分析 文件加载顺序 生命周期 框架内置基础对象* Application Context Request & Response Con ...
- Tcpdump源码分析系列7:main函数
2019独角兽企业重金招聘Python工程师标准>>> #ifndef WIN32 /* * If a user name was specified with "- ...
- python入门系列1——用Beep函数手动实现7个音符的播放
今天学了python,参考练习题,本来是找倍数的,但是想到找到之后发个提示音岂不是很有意思,然后就找到了这个函数,进而想到做个7阶音符玩玩. 7个音符差别在哪 关于乐理知识就不过多介绍了,我也是一个音 ...
- 音乐python播放函数-python入门系列1——用Beep函数手动实现7个音符的播放
今天学了python,参考练习题,本来是找倍数的,但是想到找到之后发个提示音岂不是很有意思,然后就找到了这个函数,进而想到做个7阶音符玩玩. 7个音符差别在哪 关于乐理知识就不过多介绍了,我也是一个音 ...
- Go入门系列(十八) 反射、包和测试工具
本系列文章目录 展开/收起 Go入门系列(一) 初识Go语言 Go入门系列(二) 变量.指针.数据类型简介和作用域 Go入门系列(三) 基础类型--整型.浮点型.布尔类型和字符串 Go入门系列(四) ...
最新文章
- Windows下R语言环境安装
- OSChina 周三乱弹 ——我求婚,你敢答应吗
- CentOS关机大法之shutdown应用实例
- 浅谈Aho-Corasick automaton(AC自动机)
- Windows vs Linux:\r\n 与 \r
- java中使用es的dsl_基于DSL的基于图论的Java程序中输入图数据的方法
- Java中七个潜在的内存泄露风险,你知道几个?
- 软件需求和结构_软件工程复习 3640组考题
- 原 python下DataFrame, Series, ndarray, list, dict, tuple的相互转换
- matlab 找椭圆中心点,点差分法matlab解椭圆型偏微分方程
- 可以载入史册的新名词:市场经济(蝳品经济)的上瘾依赖特性
- ps投影怎么做之教程:人像投影和物体长投影制作
- java多线程问题(代码示例)
- Gym - 101964E -Fishermen(二分+差分求前缀和)
- 30天自制操作系统第二天
- 基于Electron的桌面端应用开发和实践
- 新手学习嵌入式开发要学什么
- 32位和64位系统对于程序员的影响
- 放肆一点又何妨(一)-银川与腾格里沙漠
- 在虚拟机(centos)配置postgresql数据库(1) - 安装篇