• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

数组变量是const的指针怎么理解呢?

225004kc58az89wj84413c.jpg

但我们不是依然可以在初始化之后改变数组单元的值吗,就像a[0]=10,但const不是不允许改变吗?这个数组变量是const的指针怎么理解呢?求详细一点啊,万分感谢!
怎么利用这个解释 int b[]=a ; 是错误的呢?

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与2

首先先对比一下int * const arr 和 int const * arr的区别吧。前者的const作用在arr上,arr的值不可以变,比如arr++就是错误的。后者作用在* arr上,即不能通过arr去改变它所指向的地址里存储的值,即*arr = 10是错误的。这就解释了第一个问题。
    其次,int a[]的方式声明了一个本地变量,一经声明便分配了一段固定的连续的内存单元。a是这段存储单元的首地址,如同上边说的一样a是一个常量。int b[],b也是一个常量。常量 = 常量?这显然是错的。这就解释了第二个问题。
   至于为什么把数组名设计为一个常量,希望有大神可以解惑^_^

使用道具 举报

1.首先一个数组,比如a[10] ,它的首地址a和指针不一样,你不能再对a赋值,比如你写的int b[10]; b=a;是错误的,
2.其次const修饰数组,比如const int a[10]= {1}; 说明里面的数据是常量,你再写a[0] = 1之类出错。
3. 还有const int a[10] = {1}中的a[0] = 1没问题,但是a[0] 和const int b = 1 的b也有区别,比如:
const int a[10] = {1}; int arr[ a[0] ] = {0}; 会出错
const int b=1;  int arr = {1} = {0};  没问题

至于为什么,还不知道,希望大神解答。

使用道具 举报

发新帖

发布任务需求已有1031166位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!