在 C 语言中,数组是一种常用的数据结构,但其与指针的关系常常让初学者感到困惑。本文将深入探讨数组名 arr
、数组地址 &arr
和数组首元素地址 &arr[0]
之间的区别和联系。
1. 基本概念
在 C 语言中,当我们声明一个数组时,例如:
int arr[5] = {1, 2, 3, 4, 5};
我们创建了一个包含 5 个整数的数组。但 arr
、&arr
和 &arr[0]
究竟代表什么,它们之间有什么区别呢?
2. arr:数组名
数组名 arr
通常表示数组首元素的地址,它是一个常量指针。
- 类型:
int *
- 值:等同于
&arr[0]
- 特点:不能被修改(常量指针)
3. &arr:数组地址
&arr
表示整个数组的地址。
- 类型:
int (*)[5]
(指向包含 5 个整数的数组的指针) - 值:与
arr
和&arr[0]
相同 - 特点:代表整个数组对象
4. &arr[0]:首元素地址
&arr[0]
明