面试题答案
一键面试- 已初始化数组传递给函数:
- 使用情况:在函数内部,可以直接使用数组中已有的初始化值进行各种操作,如读取、计算等。因为数组元素已经有确定的值,所以函数基于这些值的操作会得到可预期的结果。
- 示例代码:
#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;
}
- 未初始化数组传递给函数:
- 使用情况:在函数内部,数组元素的值是不确定的,为垃圾值(取决于内存中该区域之前存储的值)。使用这些值进行操作可能会导致未定义行为,如错误的计算结果、程序崩溃等。通常在使用前需要对数组元素进行赋值操作。
- 示例代码:
#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;
}
总结来说,已初始化数组传递给函数可以直接基于其已有值进行操作,而未初始化数组传递给函数在使用前通常需先对元素赋值,以避免未定义行为。