5、main函数参数

本文详细解读了C/C++程序中的argc、argv和envp参数用法,包括它们在命令行参数传递中的作用,以及在Windows和Linux环境下环境变量的展示。通过实例演示,展示了如何获取和遍历这些参数及其内容。
摘要由CSDN通过智能技术生成

1、argc 参数个数 argv参数名称

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 int main(int argc,char*argv[],char*envp[])//参数个数,参数内容,环境变4 {
  5     printf("argc=%d\n",argc);
  6     for(int i=0;i<argc;i++)
  7     {
  8         printf("argv[%d]=%s\n",i,argv[i]);
  9     }
 10     exit(0);
 11 }

一般来说启动一个函数,就只会默认有一个参数,那就是路径,然后可以在路径后面加参数。

stu@stu-virtual-machine:~/Test$ gcc -o main main.c
stu@stu-virtual-machine:~/Test$ ./main
argc=1
argv[0]=./main
stu@stu-virtual-machine:~/Test$ ./main hello liujin 1111
argc=4
argv[0]=./main
argv[1]=hello
argv[2]=liujin
argv[3]=1111

这就是命令指令的来源
在这里插入图片描述
Windows系统上也类似
在这里插入图片描述
2、envp环境变量

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 int main(int argc,char*argv[],char*envp[])//参数个数,参数内容,环境变4 {
  5     printf("argc=%d\n",argc);
  6     for(int i=0;i<argc;i++)
  7     {
  8         printf("argv[%d]=%s\n",i,argv[i]);
  9     }
 10     for(int i=0;envp[i]!=NULL;i++)
 11     {
 12         printf("envp[%d]=%s\n",i,envp[i]);
 13     }
 14     exit(0);
 15 }

stu@stu-virtual-machine:~/Test$ ./main
argc=1
argv[0]=./main
envp[0]=SHELL=/bin/bash
envp[1]=SESSION_MANAGER=local/stu-virtual-machine:@/tmp/.ICE-unix/1920,unix/stu-virtual-machine:/tmp/.ICE-unix/1920
envp[2]=QT_ACCESSIBILITY=1
envp[3]=COLORTERM=truecolor
envp[4]=XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
envp[5]=XDG_MENU_PREFIX=gnome-
envp[6]=GNOME_DESKTOP_SESSION_ID=this-is-deprecated
envp[7]=GTK_IM_MODULE=ibus
envp[8]=LANGUAGE=zh_CN:zh
envp[9]=QT4_IM_MODULE=ibus
envp[10]=GNOME_SHELL_SESSION_MODE=ubuntu
envp[11]=SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
envp[12]=XMODIFIERS=@im=ibus
envp[13]=DESKTOP_SESSION=ubuntu
envp[14]=SSH_AGENT_PID=1811
envp[15]=GTK_MODULES=gail:atk-bridge
envp[16]=PWD=/home/stu/Test
envp[17]=LOGNAME=stu
envp[18]=XDG_SESSION_DESKTOP=ubuntu
envp[19]=XDG_SESSION_TYPE=x11
envp[20]=GPG_AGENT_INFO=/run/user/1000/gnupg/S.gpg-agent:0:1
envp[21]=XAUTHORITY=/run/user/1000/gdm/Xauthority
envp[22]=GJS_DEBUG_TOPICS=JS ERROR;JS LOG
envp[23]=WINDOWPATH=2
envp[24]=HOME=/home/stu
envp[25]=USERNAME=stu
envp[26]=IM_CONFIG_PHASE=1
envp[27]=LANG=zh_CN.UTF-8
envp[28]=LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
envp[29]=XDG_CURRENT_DESKTOP=ubuntu:GNOME
envp[30]=VTE_VERSION=6003
envp[31]=GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/12fd2448_baa8_4513_bf36_eaf74c42dc59
envp[32]=INVOCATION_ID=8e1dc83177314c8c8da2ef612c31d7bf
envp[33]=MANAGERPID=1635
envp[34]=CLUTTER_IM_MODULE=ibus
envp[35]=GJS_DEBUG_OUTPUT=stderr
envp[36]=LESSCLOSE=/usr/bin/lesspipe %s %s
envp[37]=XDG_SESSION_CLASS=user
envp[38]=TERM=xterm-256color
envp[39]=LESSOPEN=| /usr/bin/lesspipe %s
envp[40]=USER=stu
envp[41]=GNOME_TERMINAL_SERVICE=:1.89
envp[42]=DISPLAY=:0
envp[43]=SHLVL=1
envp[44]=QT_IM_MODULE=ibus
envp[45]=LD_LIBRARY_PATH=.
envp[46]=XDG_RUNTIME_DIR=/run/user/1000
envp[47]=JOURNAL_STREAM=8:53920
envp[48]=XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop
envp[49]=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
envp[50]=GDMSESSION=ubuntu
envp[51]=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
envp[52]=OLDPWD=/home/stu/Test/共享库举例
envp[53]=_=./main

3、在windows上运行结果展示

#include<stdio.h>
int main(int argc, char* argv[], char* envp[])//argv envp全是二级指针,里面存放的是参数字符串和环境变量字符串的地址
{
	printf("参数数量argc=%d\n",argc);
	for (int i = 0; i < argc; i++)
	{
		printf("第%d个参数内容是argv[%d]=%s\n", i,i, argv[i]);//argv[i]相当于*(argv+i)相当于解引用了字符串,下同
	}
	for (int i = 0; envp[i] != NULL; i++)
	{
		printf("第%d个环境变量是:envp[%d]=%s\n", i, i, envp[i]);
	}
	return 0;
}
参数数量argc=10个参数内容是argv[0]=E:\a_C C++2021代码\C++代码\C++\Debug\C++.exe
第0个环境变量是:envp[0]=ALLUSERSPROFILE=C:\ProgramData
第1个环境变量是:envp[1]=APPDATA=C:\Users\刘锦\AppData\Roaming
第2个环境变量是:envp[2]=CATALINA_BASE=C:\Program Files\Apache Software Foundation\Tomcat 9.0_Tomcat9.03个环境变量是:envp[3]=CATALINA_HOME=C:\Program Files\Apache Software Foundation\Tomcat 9.0_Tomcat9.04个环境变量是:envp[4]=Classpath=C:\Program Files\Java\jdk1.8.0_231\lib;C:\Program Files\Java\jdk-11.0.6\lib;C:\Program Files\Apache Software Foundation\Tomcat 9.0_Tomcat9.0\lib\servlet-api.jar;5个环境变量是:envp[5]=CommonProgramFiles=C:\Program Files (x86)\Common Files
第6个环境变量是:envp[6]=CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
第7个环境变量是:envp[7]=CommonProgramW6432=C:\Program Files\Common Files
第8个环境变量是:envp[8]=COMPUTERNAME=DESKTOP-BFQI39P
第9个环境变量是:envp[9]=ComSpec=C:\WINDOWS\system32\cmd.exe
第10个环境变量是:envp[10]=DriverData=C:\Windows\System32\Drivers\DriverData
第11个环境变量是:envp[11]=ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO=112个环境变量是:envp[12]=FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
第13个环境变量是:envp[13]=FPS_BROWSER_USER_PROFILE_STRING=Default
第14个环境变量是:envp[14]=HOMEDRIVE=C:15个环境变量是:envp[15]=HOMEPATH=\Users\刘锦
第16个环境变量是:envp[16]=IntelliJ IDEA=E:\IntelliJ IDEA 2019.1\bin;17个环境变量是:envp[17]=JAVA_HOME=C:\Program Files\Java\jdk1.8.0_241;C:\Program Files\Java\jdk-11.0.6;18个环境变量是:envp[18]=LOCALAPPDATA=C:\Users\刘锦\AppData\Local
第19个环境变量是:envp[19]=LOGONSERVER=\\DESKTOP-BFQI39P
第20个环境变量是:envp[20]=MSBuildLoadMicrosoftTargetsReadOnly=true21个环境变量是:envp[21]=MSMPI_BENCHMARKS=C:\Program Files\Microsoft MPI\Benchmarks\
第22个环境变量是:envp[22]=MSMPI_BIN=C:\Program Files\Microsoft MPI\Bin\
第23个环境变量是:envp[23]=NUMBER_OF_PROCESSORS=824个环境变量是:envp[24]=NVIDIAWHITELISTED=0x0125个环境变量是:envp[25]=OneDrive=C:\Users\刘锦\OneDrive
第26个环境变量是:envp[26]=OS=Windows_NT
第27个环境变量是:envp[27]=Path=C:\Program Files\Java\jdk1.8.0_241\bin;C:\Program Files\Apache Software Foundation\Tomcat 9.0_Tomcat9.0\lib;C:\Program Files\Apache Software Foundation\Tomcat 9.0_Tomcat9.0\bin;;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Users\刘锦\AppData\Local\Microsoft\WindowsApps;;E:\IntelliJ IDEA 2019.1\bin;28个环境变量是:envp[28]=PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
第29个环境变量是:envp[29]=PkgDefApplicationConfigFile=C:\Users\刘锦\AppData\Local\Microsoft\VisualStudio\16.0_0d126131\devenv.exe.config
第30个环境变量是:envp[30]=PROCESSOR_ARCHITECTURE=x86
第31个环境变量是:envp[31]=PROCESSOR_ARCHITEW6432=AMD64
第32个环境变量是:envp[32]=PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
第33个环境变量是:envp[33]=PROCESSOR_LEVEL=634个环境变量是:envp[34]=PROCESSOR_REVISION=9e0a
第35个环境变量是:envp[35]=ProgramData=C:\ProgramData
第36个环境变量是:envp[36]=ProgramFiles=C:\Program Files (x86)37个环境变量是:envp[37]=ProgramFiles(x86)=C:\Program Files (x86)38个环境变量是:envp[38]=ProgramW6432=C:\Program Files
第39个环境变量是:envp[39]=PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
第40个环境变量是:envp[40]=PUBLIC=C:\Users\Public
第41个环境变量是:envp[41]=ServiceHubLogSessionKey=4D89BCA3
第42个环境变量是:envp[42]=SESSIONNAME=Console
第43个环境变量是:envp[43]=SHIM_MCCOMPAT=0x81000000144个环境变量是:envp[44]=SystemDrive=C:45个环境变量是:envp[45]=SystemRoot=C:\WINDOWS
第46个环境变量是:envp[46]=TEMP=C:\Users\刘锦\AppData\Local\Temp
第47个环境变量是:envp[47]=ThreadedWaitDialogDpiContext=-448个环境变量是:envp[48]=TMP=C:\Users\刘锦\AppData\Local\Temp
第49个环境变量是:envp[49]=TOMCAT_HOME=C:\Program Files\Apache Software Foundation\Tomcat 9.0_Tomcat9.050个环境变量是:envp[50]=USERDOMAIN=DESKTOP-BFQI39P
第51个环境变量是:envp[51]=USERDOMAIN_ROAMINGPROFILE=DESKTOP-BFQI39P
第52个环境变量是:envp[52]=USERNAME=刘锦
第53个环境变量是:envp[53]=USERPROFILE=C:\Users\刘锦
第54个环境变量是:envp[54]=VisualStudioDir=C:\Users\刘锦\Documents\Visual Studio 201955个环境变量是:envp[55]=VisualStudioEdition=Microsoft Visual Studio Community 201956个环境变量是:envp[56]=VisualStudioVersion=16.057个环境变量是:envp[57]=VS110COMNTOOLS=E:\Vs2012\Common7\Tools\
第58个环境变量是:envp[58]=VSAPPIDDIR=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\
第59个环境变量是:envp[59]=VSAPPIDNAME=devenv.exe
第60个环境变量是:envp[60]=VSLANG=205261个环境变量是:envp[61]=VSLS_SESSION_KEEPALIVE_INTERVAL=062个环境变量是:envp[62]=VSSKUEDITION=Community
第63个环境变量是:envp[63]=windir=C:\WINDOWS
第64个环境变量是:envp[64]=ZES_ENABLE_SYSMAN=165个环境变量是:envp[65]=_NO_DEBUG_HEAP=1

E:\a_C C++2021代码\C++代码\C++\Debug\C++.exe (进程 2648)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值