开发者社区 问答 正文

关于const的一个问题

1.void a(const int arr[], int n);
arr既然作为一个形式参数,退化为一个指针,指向数组第一个元素,那为什么const还是作用于整个数组,而不仅仅是第一个元素

展开
收起
杨冬芳 2016-05-27 15:55:58 2008 分享 版权
1 条回答
写回答
取消 提交回答
  • IT从业

    1.从编译器的角度来解释,编译器不允许const指针赋值给非const指针,因此可知const指针不能隐式转换为非const指针。

    2.由1知,const指针q加上任意常数n,即q+n仍然为const指针类型(因为const指针允许本身发生移动或者改变,即q=q+n是允许的),而q[n]=*(q+n),因此一个const指针访问的整个数组都是不可修改的只读的值。

    2019-07-17 19:18:06
    赞同 展开评论
问答地址: