技术贴

C++ 2

2015-11-16  本文已影响16人  sakuradream

今天主要记录个关于指针的知识,就通过两端代码来说明吧

argc与argv的关系

#include<iostream>
#include<stdio.h>
#include<stdlib.h>

using namespace std;
int main(int argc,char* argv[])
{
    int i;
    for(i=0;i<argc;i++)
    {
        printf("Argument %d is %s .\n\r",i,argv[i]);
    }
    return 0;
}

上边的代码编译后生成可执行文件1.exe
在1.exe所在文件下运行终端,在终端中执行命令1.exe a b c,输出的结果为

Argument 0 is 1.exe.
Argument 1 is a.
Argument 2 is b.
Argument 3 is c

从上段代码可以知道,在终端运行1.exe时,输入三个参数,则在main方法中,argc为4,argv中记录了用户在终端输入的四个值。分别是1.exe、a、b、c

指针的移动

#include<iostream>
#include<stdio.h>
#include<stdlib.h>

using namespace std;
int main(int argc,char* argv[])
{
    int i;
    argc--;
    argv++;
    for(i=0;i<argc;i++)
    {
        printf("Argument %d is %s .\n\r",i,argv[i]);
    }
    return 0;
}

上边的代码编译后生成可执行文件2.exe
在2.exe文件所在文件目录下运行终端,在终端中执行命令2.exe a b c,输出的结果为

Argument 0 is a
Argument 1 is b
Argument 2 is c

可以看到在执行了 argv++之后,指针指向了下一个节点,argv[0]对应的始终为指针argv所指向的节点的内容。

上一篇下一篇

猜你喜欢

热点阅读