当前位置: 代码迷 >> 综合 >> C++学习记录(一):int main(int argc,char* argv[]) 的含义和用法
  详细解决方案

C++学习记录(一):int main(int argc,char* argv[]) 的含义和用法

热度:91   发布时间:2023-12-15 15:11:46.0

本文简单记录下C++学习过程
argc是命令行总的参数个数;
argv[]是指针数组,存放的是命令行用户输入的参数;
    argv[0] 指向程序运行的全路径名
    argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
    argv[2] 指向执行程序名后的第二个字符串
    …
    argv[argc]为NULL。
比如F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE:

int main(int argc, char* argv[])
{
    int i;for (i = 0; i<argc; i++)cout<<argv[i]<<endl;cin>>i;return 0;
}

执行时敲入 :
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd
输出如下:
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE
aaaa
bbb
ccc
ddd
再比如test.cpp:

#include <stdio.h>//#包含<stdio.h>int  main( int  argc, char * argv[])     //整数类型主函数(整数类型统计参数个数,字符类型指针数组指向字符串参数)
{
    printf ( "%d\n" ,argc);            //格式化输出while (argc)                     //当(统计参数个数)printf ( "%s\n" ,argv[--argc]);    //格式化输出return  0;                       //返回0;正常退出
}

编译生成的文件为test.exe。
在命令行键入:
test.exe test hello
得到的输出结果为:

  3hellotesttest.exe

由此可知,char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数argv[]参数,数组里每个元素代表一个参数,arg[0]通常指向程序的可执行文件的文件名,argv[1]指向test,argv[2]指向hello。
对于int main(int argc, char *argv[], char *envp[]), char *envp[] 相对来说用得比较少,它是用来取得系统的环境变量的。env[]的每一个元素都包含ENVVAR=value形式的字符串,其中ENVVAR为环境变量,value为其对应的值。
比如:

#include <stdio.h>
int main(int argc, char *argv[], char *envp[])
{
    int i;printf("You have inputed total %d argments\n", argc);for(i=0; i<argc; i++){
    printf("arg%d: %s\n", i, argv[i]);}printf("The follow is envp :\n");for(i=0; *envp[i]!='\0'; i++){
    printf("%s\n", envp[i]);}return 0;
}

输出如下:

D:>argtest this is a test programe of main()'s argments

You have inputed total 9 argments
arg0 : D:\TC\NONAME.EXE
arg1 : this
arg2 : is
arg3 : a
arg4 : test
arg5 : programe
arg6 : of
arg7 : main()'s
arg8 : argments
The follow is envp :
TMP=C:\WINDOWS\TEMP
TEMP=C:\WINDOWS\TEMP
PROMPT=pppg
winbootdir=C:\WINDOWS
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND
COMSPEC=C:\WINDOWS\COMMAND.COM
SBPCI=C:\SBPCI
windir=C:\WINDOWS
BLASTER=A220 I7 D1 H7 P330 T6
CMDLINE=noname this is a test programe of main()'s argments
相关资源:
1.https://www.cnblogs.com/avril/archive/2010/03/22/1691477.html
2.https://blog.csdn.net/dgreh/article/details/80985928?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-12.base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-12.base

  相关解决方案