1、想想以下定义中的const
分别起什么作用?编写程序验证你的猜测。
//**p1不可以改变,p1可以改变。
const char **p1;
//*p2不可以改变,p2可以改变。
char *const *p2;
//p3不可以改变
char **const p3;
一些总结内容,引用自http://learn.akae.cn/akabook/ch23s06_2。
/* test.c */
int main(int argc, char *argv[])
{
char const * * const * * pp=0; //line 4
pp++; // line 5
(*pp)++; // line 6
(**pp)++; // line 7
(***pp)++; // line 8
(****pp)++; // line 9
return 0;
}
上面的例子,大家在line 4中“*”号前后随意增删关键字const,编译,看line5到line 9,那些行会报错,能找到如下规律。
从右往左数,如果第n过*前有const关键字,那么 *...*pp 的值就不能改变。 *...*表示n个星
上例中:char const * * const * * pp=0; 从右往左数,第二个"*"和第4个前有const,所以, (**p) 和(****p)的值不可改变