面试题答案
一键面试#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr;
int sum = 0;
// 遍历数组并求和
for (int i = 0; i < 5; i++) {
// ptr 指向数组首元素,ptr + i 会根据 i 的值移动指针到相应元素的位置
// 例如 i = 0 时,ptr + 0 指向首元素 1;i = 1 时,ptr + 1 指向下一个元素 2,以此类推
// *(ptr + i) 解引用指针,获取指针指向位置的值
sum += *(ptr + i);
}
printf("数组所有元素的和为: %d\n", sum);
return 0;
}
在上述代码中:
- 首先定义了整型数组
arr
并初始化了 5 个元素{1, 2, 3, 4, 5}
,同时定义了指针ptr
指向数组首元素。 - 使用
for
循环从 0 到 4 遍历数组。 - 在每次循环中,
ptr + i
进行指针算术运算,根据i
的值移动指针到相应元素位置。因为ptr
是int *
类型,ptr + i
每次移动的距离是sizeof(int)
字节(在常见系统中int
为 4 字节)。 *(ptr + i)
对移动后的指针进行解引用操作,获取指针指向位置的值,然后累加到sum
中。- 最后输出数组所有元素的和。