猿问

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

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

怎么利用这个解释 int b[]=a ; 是错误的呢?



Single丶love
浏览 3851回答 5
5回答

揍扁扁了

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

hust_web

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[b] = {1} = {0};   没问题    至于为什么,还不知道,希望大神解答。

凌小天3635910

数组名绝对不等于指针,而且不是指针。  数组名是指针常量,地址是绝对的,score指向受保护,但首地址的内容可以改变,所以数组首地址应该是指针常量int *const score。  指针是一个变量,变量的值是另外一个变量的地址。那么,既然指针是变量,那么指针必然有自己的存储空间,只不过是该存储空间内的值是一个地址值,而不是别的内容。摘自百度知道。

繁华如梦倾城殇

数组变量是一个指针,它指向的内容是const int 类型。数组变量本身不用初始化它可以指向任何标示符,但它指向的内容是不能被改变的

木柘

数组指针是地址,你所谓的改变是赋值不改变地址。
随时随地看视频慕课网APP
我要回答