面试题答案
一键面试#include <stdio.h>
// 函数声明
void doubleArray(int *arr, int len);
int main() {
int arr[] = {1, 2, 3, 4, 5};
int len = sizeof(arr) / sizeof(arr[0]);
doubleArray(arr, len);
// 输出修改后的数组
for (int i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
// 函数定义,将数组元素翻倍
void doubleArray(int *arr, int len) {
for (int i = 0; i < len; i++) {
*(arr + i) *= 2;
}
}
指针在这个过程中的作用:
- 参数传递:在C语言中,函数参数传递是值传递。如果直接传递数组,传递的是数组首元素的副本,函数内部对数组的修改不会影响到原数组。通过传递数组首元素的指针(数组名本身就是指向首元素的指针),函数可以访问和修改原数组的内容。
- 访问数组元素:在函数
doubleArray
中,通过指针arr
和偏移量i
,可以访问到数组的每一个元素。*(arr + i)
等价于arr[i]
,这种方式更能体现指针在内存中的偏移访问机制,方便对数组元素进行操作,实现将每个元素翻倍的功能。