<数据类型> ** <指针名> ;
一张图理解二级指针

有一个一维字符指针数组ps[5]
- char *ps[5]= { "Beijing city",
- ......
- "London city" } ;
定义另一个指针变量pps,并且把指针数组的首地址赋予指针pps
char *ps[5]={......}; char ** pps = ps;

举个栗子:
- #include
- #include
-
- int main()
- {
- char* a[] = { "work","at","alibaba" };
- char** pa = a;
- pa++;
- printf("%s\n", *pa);
- return 0;
- }
一般形式为:
void * <指针变量名称> ;
对于void指针,在没有强制类型转换之前,不能进行任何指针的算术运算
const <数据类型> 变量名 = [<表达式>] ;
const <数据类型> * <指针变量名称>[= <指针运算表达式>] ;
const <数据类型> * const <指针变量名> = <指针运算表达式> ;
int main(int argc, const char *argv[])
1)其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数
2)argv参数是字符串指针数组,其各元素值为命令行中各字符串的首地址。
3)指针数组的长度即为参数个数argc。