当前位置:首页 > 问问

为什么数组不能是变量 为何数组不可变?

数组和变量的区别

先来看看数组和变量的区别。数组是一组相同类型的变量的集合,在内存中是连续的一段空间。而变量是一段存储值的空间,可以存储不同类型的数据。

因此,数组和变量在存储方式上有很大的不同,这也导致了数组和变量在使用上存在很多的差异。

数组是常量指针

数组在内存中是连续的一段空间,它的首地址就是数组的名字。因此,数组名代表的是这段内存的地址,也就是说,数组是一个常量指针。这就导致了数组一旦被定义,其大小就无法改变。

如果将数组名赋给一个变量,那么这个变量就成为了指针变量,指向数组的首地址,而这个指针变量的值是可以改变的,但它始终指向数组的首地址。因此,不能将数组名作为左值,也就是不能对数组名进行赋值操作。

数组作为参数传递时的问题

数组作为参数传递时,是将这个数组的首地址传递给函数,因此在函数内部对数组元素的修改,会反映到原数组中。

但是,如果将一个数组传递给函数后,又将其赋值给一个指针变量,在函数内部对指针变量进行修改,并不会改变原数组的值,因为指针变量的值是传值调用,也就是说,只是将指针变量的值(也就是数组的首地址)传递给了函数,对指针变量本身的修改并不会反映到原数组中。

数组名的特殊性质

数组名是一个指向数组首元素的常量指针,因此用数组名作为参数传递时,实际上传递的是数组首元素的值,并不是整个数组。如果希望传递整个数组,需要在函数中使用指针或引用,或者使用数组名加上数组大小的方式来传递。

同时,由于数组名代表的是这段内存的地址,因此可以使用数组名来进行取地址运算,也就是对数组名取地址得到的是数组的首地址。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章