众所周知,每一个可执行文件对应的源程序必定有一个main 函数,而在命令行界面中输入的参数就是通过main()函数的参数进行传入的。在很多C++程序设计当中,我们设计的main()函数既没有输入参数,也没有返回值,但实际上,main()函数与其他函数一样,可以有参数和返回值的。
main()函数可以有两个形式参数:int argc(代表运行程序时命令行中的参数个数)和 char argv(指向字符的指针数组)。如下代码就是一个典型的例子:
#include<iostream>
using namespace std;
int main(int argc, char *argv[ ])
{ int i;
cout<<"argc = "<<argc<<endl;
for(i=0;i<argc;i++)
cout<<"argv["<<i<<"]"<<argv[i]<<endl;
return 0; //返回为0表示运行成功
}
如果在命令行中输入”myprogram try this“, 则可以看到main函数对应的输出是:
argc=3, //用来显示命令行中参数的输入的个数
argv[0]= myprogram, //第一个参数字符串
argv[1]=try,
argv[2]=this;
指针还有更多详尽的应用:
【1】指向指针的指针:
例如: char *string[10]; 其中我们可以知道string 就是一个指针,然后加入” * “表示该数组中的每一个元素本身又是一个指针。
例如:int x=5, *p= &x, **q = &p;
q(存放p指针的地址) | p(存放x整型的地址) | x(整型数值) |
【2】指向数组的指针:
例如: int (*p) [4], *q; //注意:这个小括号不能省略,否则变成了指针数组(4个指针),这里只有p一个指针,且表示指针p里面有连续4个元素地址。
a[3][4] =
1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 |
则通过以下方式可以访问输出数组a的所有元素:
int (*p)[4], *q;
for(p=a; p<a+3;p++) //表示每一行
for(q=*p; q<*p+4;q++) cout<<*q<<‘\t'; //表示每一列
【3】指向函数的指针: 主要的作用是作为另一个函数的参数或者是用于实现菜单的选择。