c - 关于c语言中的const数组参数
问题描述
我一直在通过 knking book 学习 c 语言。const
我对数组参数有疑问。书上说普通变量被传递给函数,它的值被复制。因此,对相应参数的任何更改都不会影响变量。相比之下,用作参数的数组不受更改保护。因此,我们使用const
保护数组参数如下;
int find_largest(const int a[], int n)
a
是指向数组a
,的第一个元素的指针a[0]
。然后我想知道是否const int a[0]
意味着只a[0]
保护不被修改或保护后续数组元素不被修改?
解决方案
声明const int a[]
声明a
其元素具有 type 的数组const int
。const
限定符适用于所有元素。
当此声明用作函数参数的声明时,它会自动调整为指针的声明,const int *a
. 当指针算法与这个指针一起使用时,结果是一个相同类型的指针。因此a+0
,a+1
和a+2
都是类型的指针const int *
。
下标是根据指针算术定义的,所以a[0]
, a[1]
,a[2]
都是 type 的表达式const int
。
推荐阅读
- prometheus - 节点导出器 - 特定收集器 scrape_interval
- r - 计算睡眠时间
- javascript - 我们可以在 django 中存储渲染对象吗
- python - 保存为灰色的增强图像(imgaug、imageio、opencv)
- python - 如何根据分箱数据的标准差绘制热图?
- python - 在 Django 模型类上使用继承的类方法
- rust - Rust:创建一个整数向量
- linux - 一个衬垫将文件夹(无文件)从一个位置复制到另一个位置
- reactjs - React - 我们是否应该在更新状态之前检查组件是否已安装?
- reactjs - 如何将 BrowserRouter 从 react-router-dom 更改为 Router 以使用自定义历史对象?