MST

星途 面试题库

面试题:C语言一维数组名作为函数参数时的地址传递

在C语言中,编写一个函数,该函数接受一个一维数组名作为参数,并在函数内修改数组元素的值。请说明数组名作为参数传递时,实际传递的是什么?并举例说明如何通过函数修改数组元素。
42.1万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

在C语言中,数组名作为参数传递时,实际传递的是数组首元素的地址,也就是一个指针。

以下是示例代码:

#include <stdio.h>

// 函数声明
void modifyArray(int *arr, int size);

int main() {
    int array[5] = {1, 2, 3, 4, 5};
    int size = sizeof(array) / sizeof(array[0]);

    printf("修改前数组元素: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }
    printf("\n");

    modifyArray(array, size);

    printf("修改后数组元素: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }
    printf("\n");

    return 0;
}

// 函数定义,修改数组元素的值
void modifyArray(int *arr, int size) {
    for (int i = 0; i < size; i++) {
        arr[i] = arr[i] * 2;
    }
}

在上述代码中:

  1. modifyArray 函数接受一个 int 类型的指针 arr 和数组的大小 size 作为参数。这里的 arr 实际上就是数组首元素的地址。
  2. main 函数中,定义了一个数组 array 并初始化。然后调用 modifyArray 函数,将数组名 array 作为参数传递给函数,实际上传递的是数组首元素的地址。
  3. modifyArray 函数内,通过指针 arr 来修改数组元素的值,将每个元素都乘以2 。
  4. 最后在 main 函数中打印修改前后的数组元素,以验证修改是否成功。