【C命令行参数】main函数的参数含义
来源:互联网 发布:苹果7为什么4g网络很慢 编辑:程序博客网 时间:2024/06/06 02:44
C中的命令行参数又叫位置参数,它可以被传到程序里面,派各种用途
我们先来看main函数的参数
int main( int argc, char *argv[ ], char *envp[ ] )
{
program-statements
}
main()函数的参数就是通过命令行来进行传参的;
vs2013传参方式:项目->属性->配置属性->调试->命令行参数,然后进行传参。
argc是指argv[]数组中指针元素的个数;通过下面程序可以验证。
#include<stdio.h>#include<windows.h> int main(int argc, char *argv[], char *envp){int i = 0;for (; i < argc; i++){printf("%d -> %s\n", i, argv[i]);}system("pause");return 0;}
argv存放的是通过命令行传进来的一个个内容的地址,但除过argv[0],通过下面程序可以发现arg[0]里面存放的是当前运行程序的地址,还有argv最后一个数组里面存放的是NULL;
#include<stdio.h>#include<windows.h> int main(int argc, char *argv[], char *envp){int i = 0;for (; argv[i]; i++){printf("%d -> %s\n", i, argv[i]);}system("pause");return 0;}
envp里存放正是系统的环境变量
MSDN上是这样解释的:
#1:许多UNIX操作系统中普遍扩展了对envp数组的支持;
#2:它保存这用户环境中的变量字符串,以NULL结束。正因此,本文上面的例子用if(envp[i])来判断是否打印完毕;
#3:envp可以是char*[]类型也可以是char**类型,本文上面的例子使用的是前者;如果使用宽字符集,则应使用wmain代替main,并使用wchar*[]或wchar**类型的envp。本文上面的例子使用tchar.h,使用了通用文本编程;
#4:envp一旦传入,它就只是单纯的字符串数组而已,不会随着程序动态设置发生改变。可以使用putenv函数实时修改环境变量,也能使用getenv实时查看环境变量,但是envp本身不会发生改变;
#5:这个版本对ANSI C兼容,但对ANSI C++不兼容。
envp用的不多,因此对它的作用并没有argc和argv那样清楚的理解。不过依据它的表现,笔者能够想到的到envp的作用有两点:
(1)为程序提供参考:程序的运行过程中需要参考环境变量作出决定,比如安装程序必须知道系统默认的ProgramFiles,它可以通过envp查看到本系统的程序文件夹在ProgramFiles=C:\Program Files,于是默认安装目录就设置定为C:\ProogramFiles;
(2)如果程序在运行过程中对环境变量做了修改,在它退出时想要恢复,这时就可以参照envp中的数据将环境变量恢复到程序执行前的设置。
- 【C命令行参数】main函数的参数含义
- c语言 main函数的两个参数的含义
- C++main函数参数以及含义
- C语言main函数的参数含义及输入
- C语言main函数的参数含义及输入
- C语言main函数的参数含义及输入
- main函数命令行参数
- main函数命令行参数
- c/c++ main 函数命令行参数的使用 知识小结
- c/c++ main 函数命令行参数的使用 知识小结
- c/c++ main 函数命令行参数的使用 知识小结
- main参数的含义
- [C]main 函数的参数
- C++main函数的参数
- C main函数的参数
- 带命令行参数的 main 函数详解
- 带命令行参数的 main 函数详解
- 关于Main函数的命令行参数
- 编程常用技术介绍
- 解决Koltin和DataBinding冲突 Unresolved reference: databinding
- python的配置
- Linux内核很吊之 module_init解析 (下)
- IntelliJ IDEA 注册码
- 【C命令行参数】main函数的参数含义
- 算法训练 区间k大数查询
- HDU 1176 免费馅饼 (动态规划)
- javascript字符串
- SQL连接查询2 外连接(左右联接查询)
- 策略模式 Java
- java的几种对象(PO,VO,DAO,BO,POJO)解释
- 代理模式
- springboot @import @importResource 注解使用方式