面试题答案
一键面试常见应用场景
- 数组初始化:在初始化数组时,如果使用大括号初始化列表,编译器可以根据列表中的元素个数自动确定数组的长度。这使得代码在修改元素个数时更加灵活,无需手动修改数组声明中的长度。
- 字符串处理:在处理字符串时,通常使用字符数组。利用数组长度自动计算原理,可以方便地创建和初始化字符串,并且在进行字符串操作(如拼接、复制等)时,能根据实际字符数量灵活处理。
- 数据存储与统计:对于需要存储一组相关数据并进行统计分析的场景,利用数组长度自动计算原理可以简化数组的创建过程,并且方便根据实际数据量进行操作。
举例说明
- 数组初始化示例
#include <stdio.h>
int main() {
// 利用数组长度自动计算原理初始化数组
int numbers[] = {1, 2, 3, 4, 5};
// 输出数组长度
printf("数组长度: %zu\n", sizeof(numbers) / sizeof(numbers[0]));
return 0;
}
在这个例子中,numbers
数组根据初始化列表中的元素个数自动确定长度为5。通过 sizeof(numbers) / sizeof(numbers[0])
可以计算出数组的实际长度。
- 字符串处理示例
#include <stdio.h>
#include <string.h>
int main() {
// 利用数组长度自动计算原理初始化字符串
char str1[] = "Hello";
char str2[] = " World";
char result[100];
// 字符串拼接
strcpy(result, str1);
strcat(result, str2);
printf("拼接后的字符串: %s\n", result);
return 0;
}
这里 str1
和 str2
字符数组根据字符串常量的长度自动确定数组长度。在拼接字符串时,无需预先精确指定 result
数组的长度(只要足够大),利用自动计算原理使得字符串操作更便捷。
- 数据存储与统计示例
#include <stdio.h>
int main() {
// 利用数组长度自动计算原理存储成绩
int scores[] = {85, 90, 78, 92, 88};
int sum = 0;
// 计算总成绩
for (size_t i = 0; i < sizeof(scores) / sizeof(scores[0]); i++) {
sum += scores[i];
}
double average = sum / (double)(sizeof(scores) / sizeof(scores[0]));
printf("平均成绩: %.2f\n", average);
return 0;
}
此例中 scores
数组根据初始化成绩的个数自动确定长度。通过 sizeof(scores) / sizeof(scores[0])
可以方便地遍历数组计算总成绩和平均成绩,无需手动指定数组长度。