MST

星途 面试题库

面试题:C语言一维数组下标引用的中等应用

假设有一个C语言程序,定义了一维数组 `int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};`。要求编写一个函数,通过合理使用下标引用,实现将数组中所有奇数位置(下标为奇数)的元素值翻倍,最后返回修改后的数组。请写出该函数的代码,并解释下标引用在这个过程中的使用原理。
48.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

int* doubleOddIndexElements(int arr[], int size) {
    for (int i = 1; i < size; i += 2) {
        arr[i] *= 2;
    }
    return arr;
}

下标引用原理解释

  1. 在C语言中,数组名在大多数情况下会被转换为指向数组首元素的指针。例如 int arr[10]arr 就代表指向 arr[0] 的指针。
  2. 当下标引用 arr[i] 时,它实际计算的是 *(arr + i),即从数组首地址开始,偏移 i 个元素大小的位置处的值。
  3. 在上述代码中,for (int i = 1; i < size; i += 2) 循环中,i 代表数组的下标,从1开始(奇数下标),每次增加2。arr[i] 就获取到了奇数下标的元素值,arr[i] *= 2 实现将该元素值翻倍。最后函数返回修改后的数组(这里实际上返回的是数组首地址,因为数组名被转换为指针)。