【C语言练习】017. 理解指针与数组的关系
017. 理解指针与数组的关系
- 017. 理解指针与数组的关系
- 1. 数组的本质
- 示例代码
- 输出结果
- 解释
- 2. 通过指针访问数组元素
- 示例代码
- 输出结果
- 解释
- 3. 数组名作为函数参数
- 示例代码
- 输出结果
- 解释
- 4. 指针与数组的等价性
- 示例代码
- 输出结果
- 5. 二维数组与指针
- 示例代码
- 输出结果
- 解释
017. 理解指针与数组的关系
在C语言中,指针和数组之间有着非常紧密的关系。理解它们之间的关系对于掌握C语言的高级特性非常重要。以下将详细解释指针与数组的关系,并通过具体示例帮助你更好地理解。
1. 数组的本质
在C语言中,数组本质上是一块连续的内存区域,用于存储多个相同类型的元素。数组的名称实际上是一个指向数组首元素的指针。
示例代码
#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5}; // 声明并初始化一个数组int *ptr = arr; // 将指针初始化为数组的首地址printf("Address of arr: %p\n", arr); // 输出数组的首地址printf("Address of arr[0]: %p\n", &arr[0]); // 输出数组第一个元素的地址printf("Address stored in ptr: %p\n", ptr); // 输出指针存储的地址return 0;
}
输出结果
Address of arr: 0x7ffd5b9a5a44
Address of arr[0]: 0x7ffd5b9a5a44
Address stored in ptr: 0x7ffd5b9a5a44
解释
-
arr
是数组的名称,它表示数组的首地址。 -
&arr[0]
是数组第一个元素的地址。 -
ptr
是一个指针,初始化为数组的首地址。 -
从输出结果可以看出,
arr
、&arr[0]
和ptr
都指向同一个地址。
2. 通过指针访问数组元素
可以使用指针来访问数组的元素。通过指针加偏移量的方式,可以访问数组中的任意元素。
示例代码
#include <stdio.h>int main() {int arr[] = {1, 2, 3, 4, 5};