LInux命令行参数
在大学里面,老师一般会这样教,定义main 函数应该是这样的:
甚至是这样的:
但是其实在 Linux 下,一个正确的main 函数应该被定义为如下:
大家可以看到,main 函数中有两个参数,分别是 argc 和 argv。但是在 C 语言中规定,main 函数是不能被别的函数调用的,那究竟是谁传递了参数给main 函数呢?
答案是:命令行
当我们在命令执行程序时,其实就是在给main 函数传递参数,其中 argc 的全称是 argument count,即命令行的参数的数目。 argv 的全称是 argument value,即命令行的参数对应的值。
我们先来研究一下这个 argc 吧,注意,这个 argc 指的不是额外的参数,而是包含执行文件在内的参数个数。举个例子吧,假设有程序如下:
执行程序结果:
命令行的参数是以空格分开,大家可以看到,argc 就是参数个数,包含执行的文件在内。
那么再来看看这个 argv,类型是 char *[],如果有一定 C 语言功底的同学应该知道,这个是一个字符指针数组,通俗一点来讲,就是一个数组名字叫 argv,并且数组中放着很多个字符串:
那么究竟是谁放在里面呢?没错,就是命令参数的值,以上面的实例为例子
gec@ubuntu:~$ ./example one two three 代表当前有 4 个参数,那么 argv 的数组中就应该是这样的:
那么数组访问每个成员,我们在大学里面已经学习过了,使用下标就可以访问:argv[0]为数组第一个成员,argv[1]为数组第二个成员,如此类推。
那么接下来写个程序验证一下:
执行的结果:
转载请注明原文链接:Linux C 语言:main 函数的命令行传参
http://www.taodudu.cc/news/show-638984.html
相关文章:
- Linux高级篇——IO系统编程
- 机器的速度与主频之间的关系
- go环境搭建
- 2020年最全最简单KMP算法讲解
- 详解JVM内存结构(基于JDK8)
- KMP算法求解next数组值(模式串从下标0开始或从下标1开始)以及求值后与主串的匹配过程
- LeetCode刷题知识总结
- xil_printf打印遇到的问题
- ZYNQ UARTLite接收不定长数据
- 第2章 信号、接口和引脚(XIlinx ZYNQ-7000 SOC UG-585文档)
- AR# 58294 Zynq-7000 SoC: PS SPI 控制器文档升级
- Vivado 自定义VHDL的IP核
- 17章 SPI控制器(XIlinx ZYNQ-7000 SOC UG-585文档)
- 新建VHDL的Vivado工程
- VHDL的数据对象(学习笔记1)
- AXI quad SPI没有输出
- ZYNQ中断示例修改
- MATLAB常用命令、函数与运算
- Matalab类定义
- XScuGic_Connect分析
- MATLAB数字信号处理函数
- AXI-IIC官方示例解析
- MATLAB浮点数与十六进制(浮点数)转换
- verilog中的代码使用
- Verilog如何避免Latch
- 组合电路Verilog的几种描述方式
- Verilog中的加法器(半加器,全加器,串行、超前进位加法器)
- STM32的I/O口的八种工作模式
- 上拉输入与下拉输入
- void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)的一些理解
LInux命令行参数相关推荐
- linux 参数解析,Linux 命令行参数解析
在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢? 通常使用GNU C提供的函数getopt.getopt_long.getopt_long_only函数来解析命令 ...
- linux命令行参数含空格,Linux的命令行参数风格
在Linux中,几乎所有程序都会提供几个命令行选项,有些程序提供的命令行参数多到咂舌!这样做使得程序的运行非常灵活,而且程序的配置信息可以由脚本指定,这对于作为管道或过滤器的程序尤其重要.有三种约定可 ...
- linux读取命令行参数,Linux学习笔记(五)—— Linux命令行参数
一.客户端输入 脚本执行的过程是对数据变量进行处理的过程,之前在脚本中处理的数据都是静态数据,而不是和客户端交互的动态数据.在大多数情况下脚本执行过程需要和客户端进行交互,用来获得脚本处理的数据,这些 ...
- c 运行 java linux命令行参数,Linux下用命令行编译运行Java总结
最近使用腾讯云的Cloud Studio写Java,只能使用命令行进行编译运行,趁此机会,学习一下Linux的一些常用命令.平时windows下IDE用习惯了,现在用命令行进行编译运行,发现其实问题还 ...
- 隐藏与篡改Linux命令行参数
如果一个程序的命令行是一个password之类的不便展示的字符串,如何不让ps打印出来呢? ps是从/proc/$pid/cmdline里拿的命令行,而/proc/$pid/cmdline则是在内核空 ...
- linux命令行参数含空格,linux-具有命令行参数和空格的Perl脚本
我觉得我在这里似乎遗漏了一些明显的东西,但是我似乎无法弄清楚发生了什么.我有一个从C代码调用的perl脚本.脚本参数是这样的: my_script "/some/file/path" ...
- Linux命令行参数前加--,-和不加杠
参数前"-"的表明后面的参数是字符形式. 参数前"--"的则表明后面的参数是单词形式. 参数前有横的是System V风格. 参数前没有横的是BSD风格. 转 ...
- Linux命令行参数前加杠-和不加杠的区别
参数前"-"的表明后面的参数是字符形式. 参数前"–"的则表明后面的参数是单词形式. 参数前有横的是System V风格. 参数前没有横的是BSD风格.
- 【linux】Valgrind工具集详解(八):Memcheck命令行参数详解
[linux]Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释. Memcheck命令行选项 –leak-check=<no| ...
最新文章
- Tomcat关闭后,重新启动,session中保存的对象为什么还存在解决方法
- Atom编辑Markdown文件保存后行尾的空格自动消失的问题解决
- Nacos更新配置参数不生效
- 2-27 最短路径《啊哈算法》2-28完成四种算法
- python format 时间格式
- scp连接linux网络错误,winscp连接linux(centos7)时提示主机超过15秒无通信,继续等待的解决方法...
- sin查找表 matlab,FPGA利用查找表实现sin正弦函数
- java 插件开发教程_Eclipse插件开发的详细教程
- oeasy教您玩转vim - 39 - # 剪切粘贴
- Mysql中date和datetime的区别
- vc 写一个计算机功能,VC++的一个实例
- TensorFlow中的通信机制——Rendezvous(一)本地传输
- 突破体系结构的错误–当Dreamliner成为噩梦时
- WebRTC中的信令和内网穿透技术 STUN / TURN
- 利用Python画一只小猪佩奇
- efm8系列单片机c语言编程,EFM8单片机用Keil编程,头文件怎么写?
- ubuntu qt creator编译出现:-1: error: Warning: File ' has modification time 3.8e+04 s in the future
- matlab可以拟合分段函数吗,如何用matlab拟合出分段函数
- Java打印程序设计全攻略
- 为什么RPA机器人会广泛应用于财务管理领域?
热门文章
- 网易云信详解B2B企业借力敏捷营销的高增长之道
- [译] 关于Angular的变更检测(Change Detection)你需要知道这些
- 20170204-py
- Win10桌面右键响应非常慢怎么办?
- HDU1164 Eddy's research I【素因子分解】
- How to install MinGW-w64 and MSYS2?
- MongoDB查询(上)
- wordpress启动初始化过程
- 微软北大联合提出换脸AI和脸部伪造检测器,演绎现实版「矛与盾」?
- 解决因为http_proxy代理导致的git clone失败的问题:OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to xxx:443