MST

星途 面试题库

面试题:C语言指针算术运算基础应用

假设有一个整型数组 `int arr[5] = {1, 2, 3, 4, 5};`,定义一个指向该数组首元素的指针 `int *ptr = arr;`。请编写代码,使用指针算术运算,计算数组中所有元素的和,并解释每一步指针算术运算的含义。
42.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#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;
}

在上述代码中:

  1. 首先定义了整型数组 arr 并初始化了 5 个元素 {1, 2, 3, 4, 5},同时定义了指针 ptr 指向数组首元素。
  2. 使用 for 循环从 0 到 4 遍历数组。
  3. 在每次循环中,ptr + i 进行指针算术运算,根据 i 的值移动指针到相应元素位置。因为 ptrint * 类型,ptr + i 每次移动的距离是 sizeof(int) 字节(在常见系统中 int 为 4 字节)。
  4. *(ptr + i) 对移动后的指针进行解引用操作,获取指针指向位置的值,然后累加到 sum 中。
  5. 最后输出数组所有元素的和。