MST

星途 面试题库

面试题:C语言指针在函数参数传递中的中等应用

编写一个C语言函数,该函数接受一个整数数组和数组的长度作为参数,通过指针传递方式在函数内部修改数组元素,将每个元素翻倍。请给出完整的代码实现,并解释指针在这个过程中的作用。
47.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

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

指针在这个过程中的作用:

  1. 参数传递:在C语言中,函数参数传递是值传递。如果直接传递数组,传递的是数组首元素的副本,函数内部对数组的修改不会影响到原数组。通过传递数组首元素的指针(数组名本身就是指向首元素的指针),函数可以访问和修改原数组的内容。
  2. 访问数组元素:在函数doubleArray中,通过指针arr和偏移量i,可以访问到数组的每一个元素。*(arr + i)等价于arr[i],这种方式更能体现指针在内存中的偏移访问机制,方便对数组元素进行操作,实现将每个元素翻倍的功能。