首页 > 解决方案 > 关于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]保护不被修改或保护后续数组元素不被修改?

标签: c

解决方案


声明const int a[]声明a其元素具有 type 的数组const intconst限定符适用于所有元素。

当此声明用作函数参数的声明时,它会自动调整为指针的声明,const int *a. 当指针算法与这个指针一起使用时,结果是一个相同类型的指针。因此a+0,a+1a+2都是类型的指针const int *

下标是根据指针算术定义的,所以a[0], a[1],a[2]都是 type 的表达式const int


推荐阅读