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所指向的节点的内容。