NS2代码库中,经常看到以(int agrc,const char* const* argv)为参数的函数。
按照下面转载中提及的读法,应读为 argv is (a pointer to (a const pointer ( to a const char))).
argv其实就是个二级指针(即是指向指针的指针),第一个const修鉓是表示argv指向的指针指向了一个常量,不能修改;第二个const修鉓是表示argv指向的指针是个常量,不能对其进行增减操作。
argv[0]其实就是argv指向的第一个指针(char* 类型指针),它实际上指向 一个以'\'结束的字符串。
一般情况下:argv[0]-argv[argc-1] 存储着函数的各个参数。
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
把一个声明从右向左读。
char * const cp; ( * 读成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
char ** p1; //
char const char **p2;//
char * const * p3;//
const char * const * p4;//
char ** const p5;// const pointer to
const char ** const p6;// const pointer to
const char * const * const p8;// const pointer to const pointer to const char