C语言的数组与字符串
C的数组与字符串
数组和字符串是C语言中用于存储和处理数据的重要数据结构。掌握数组和字符串的定义、使用以及相关操作函数,是编写高效和功能丰富的C程序的基础。
1 一维数组的定义与使用
一维数组是一组相同数据类型元素的集合,每个元素可以通过索引访问。数组在内存中是连续存储的,便于高效地访问和操作数据。
数组的定义
语法:
数据类型 数组名[数组大小];
- 数据类型:数组中元素的类型,如
int
、float
等。 - 数组名:数组的名称,用于引用数组。
- 数组大小:数组中元素的个数,必须是一个常量表达式。
示例:
#include <stdio.h>int main() {int numbers[5]; // 定义一个包含5个整数的数组return 0;
}
数组的初始化
数组可以在定义时进行初始化,赋予每个元素初始值。如果未完全初始化,未赋值的元素会被自动初始化为零。
语法:
数据类型 数组名[数组大小] = {元素1, 元素2, ..., 元素n};
示例:
#include <stdio.h>int main() {int numbers[5] = {1, 2, 3, 4, 5}; // 完全初始化int scores[5] = {90, 85}; // 部分初始化,剩余元素自动为0// 输出数组元素for (int i = 0; i < 5; i++) {printf("scores[%d] = %d\n", i, scores[i]);}return 0;
}
输出:
scores[0] = 90
scores[1] = 85
scores[2] = 0
scores[3] = 0
scores[4] = 0
访问和修改数组元素
数组元素通过索引访问,索引从0
开始。可以通过索引读取或修改特定位置的元素。
示例:
#include <stdio.h>int main() {int numbers[5] = {10, 20, 30, 40, 50};// 访问数组元素printf("第一个元素: %d\n", numbers[0]); // 输出 10printf("第三个元素: %d\n", numbers[2]); // 输出 30// 修改数组元素numbers[1] = 25; // 将第二个元素修改为25printf("修改后的第二个元素: %d\n", numbers[1]); // 输出 25return 0;
}
输出:
第一个元素: 10
第三个元素: 30
修改后的第二个元素: 25
数组的遍历
遍历数组意味着依次访问数组中的每个元素,通常使用for
循环实现。
示例:
#include <stdio.h>int main() {int numbers[5] = {1, 2, 3, 4, 5};int sum = 0;// 使用for循环遍历数组for (int i = 0; i < 5; i++) {printf("numbers[%d] = %d\n", i, numbers[i]);sum += numbers[i]; // 累加元素值}printf("数组元素之和: %d\n", sum); // 输出 15return 0;
}
输出:
numbers[0] = 1
numbers[1] = 2
numbers[2] = 3
numbers[3] = 4
numbers[4] = 5
数组元素之和: 15
多种数组初始化方式
-
部分初始化
:
int numbers[5] = {1, 2}; // numbers = {1, 2, 0, 0, 0}
-
不指定大小,由初始化列表决定
:
int numbers[] = {1, 2, 3, 4, 5}; // 自动推断数组大小为5
-
全部元素初始化为零
:
int numbers[5] = {0}; // numbers = {0, 0, 0, 0, 0}
示例:
#include <stdio.h>int main() {int a[5] = {1, 2}; // 部分初始化int b[] = {3, 4, 5}; // 自动推断大小为3int c[5] = {0}; // 全部初始化为0// 输出数组aprintf("数组a: ");for (int i = 0; i < 5; i++) {printf("%d ", a[i]);}printf("\n");// 输出数组bprintf("数组b: ");for (int i = 0; i < 3; i++) {printf("%d ", b[i]);}printf("\n");// 输出数组cprintf("数组c: ");for (int i = 0; i < 5; i++) {printf("%d ", c[i