随笔 - 0, 文章 - 4, 评论 - 0, 引用 - 0
数据加载中……

指针加const脑细胞杀伤器

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)的值不可改变




posted on 2011-03-19 02:18 Moking 阅读(133) 评论(0)  编辑 收藏 引用 所属分类: C\C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理