MST

星途 面试题库

面试题:C语言数组初始化在函数传递中的作用

请说明在C语言中,将一个已初始化的数组传递给函数和未初始化的数组传递给函数,在函数内部使用时有何不同?并举例说明。
47.7万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
  1. 已初始化数组传递给函数
    • 使用情况:在函数内部,可以直接使用数组中已有的初始化值进行各种操作,如读取、计算等。因为数组元素已经有确定的值,所以函数基于这些值的操作会得到可预期的结果。
    • 示例代码
#include <stdio.h>

void processInitializedArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int initializedArray[] = {1, 2, 3, 4, 5};
    int size = sizeof(initializedArray) / sizeof(initializedArray[0]);
    processInitializedArray(initializedArray, size);
    return 0;
}
  1. 未初始化数组传递给函数
    • 使用情况:在函数内部,数组元素的值是不确定的,为垃圾值(取决于内存中该区域之前存储的值)。使用这些值进行操作可能会导致未定义行为,如错误的计算结果、程序崩溃等。通常在使用前需要对数组元素进行赋值操作。
    • 示例代码
#include <stdio.h>

void processUninitializedArray(int arr[], int size) {
    for (int i = 0; i < size; i++) {
        // 这里arr[i]的值是不确定的,直接使用可能导致问题
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int uninitializedArray[5];
    int size = sizeof(uninitializedArray) / sizeof(uninitializedArray[0]);
    processUninitializedArray(uninitializedArray, size);
    return 0;
}

总结来说,已初始化数组传递给函数可以直接基于其已有值进行操作,而未初始化数组传递给函数在使用前通常需先对元素赋值,以避免未定义行为。