如何用指针访问数组 C
时间: 2024-05-15 18:15:24 浏览: 96
在 C 语言中,数组名是数组第一个元素的地址,可以通过指针访问数组。
例如,假设有一个整型数组 arr,可以定义一个指向数组第一个元素的指针 ptr:
```c
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;
```
现在可以通过指针 ptr 访问数组元素:
```c
printf("%d\n", *ptr); // 输出 1
printf("%d\n", *(ptr+1)); // 输出 2
printf("%d\n", *(ptr+2)); // 输出 3
```
也可以使用下标访问数组元素:
```c
printf("%d\n", ptr[0]); // 输出 1
printf("%d\n", ptr[1]); // 输出 2
printf("%d\n", ptr[2]); // 输出 3
```
需要注意的是,指针访问数组元素时要满足以下条件:
1. 指针的类型和数组元素的类型相同;
2. 指针指向的内存区域必须是已分配的,否则会引发未定义的行为;
3. 指针偏移量必须在数组的范围内,否则会引发数组越界错误。
相关问题
C语言中p指针指向数组,通过指针打印数组
假设有一个数组`arr`,可以通过定义一个指向该数组的指针`p`,并使用指针操作符`*`来访问数组元素。下面是一个示例代码:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5}; // 定义数组
int *p = arr; // 定义指向数组的指针
for (int i = 0; i < 5; i++) {
printf("%d ", *(p + i)); // 使用指针访问数组元素
}
return 0;
}
```
输出结果为:
```
1 2 3 4 5
```
在这个示例中,我们使用指针`p`来访问数组`arr`中的元素。在循环中,我们使用指针操作符`*`和加法运算符`+`来访问数组的每个元素。 `(p + i)` 表示指针`p`加上偏移量`i`,得到数组中的第`i`个元素的地址,然后通过指针操作符`*`来访问该元素的值。
编写函数,求包含 n 个元素的整数数组中元素的平均值。要求在函数内部使用指针访问数组元素,使用c语言。
可以按照以下方式编写函数来实现:
```c
double average(int *arr, int n) {
double sum = 0;
for (int i = 0; i < n; i++) {
sum += *(arr + i);
}
return sum / n;
}
```
这个函数的第一个参数是一个整数指针,指向整数数组的第一个元素;第二个参数是数组的大小。在函数内部,我们使用指针访问数组元素来计算它们的总和。最后,我们将总和除以数组大小来计算平均值,并将其返回。
阅读全文