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