在C语言中,数组和字符串是管理和操作数据的基本工具。数组可以存储一组相同类型的数据,而字符串实际上是以字符数组的形式存在的。理解和掌握它们的使用是编写高效代码的关键。
一维数组与多维数组
- 一维数组:一维数组用于存储一组相同类型的元素,这些元素通过索引访问。数组的索引从0开始。
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5}; // 声明并初始化一个一维数组
// 访问数组元素
for (int i = 0; i < 5; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}
return 0;
}
// 运行结果:
// arr[0] = 1
// arr[1] = 2
// arr[2] = 3
// arr[3] = 4
// arr[4] = 5
多维数组:多维数组是一种数组的数组,最常见的是二维数组,用于表示矩阵或表格数据。
#include <stdio.h>
int main() {
int matrix[2][3] = {
{1, 2, 3},
{4, 5, 6}
}; // 声明并初始化一个二维数组
// 访问二维数组元素
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("matrix[%d][%d] = %d\n", i, j, matrix[i][j]);
}
}
return 0;
}
// 运行结果:
// matrix[0][0] = 1
// matrix[0][1] = 2
// matrix[0][2] = 3
// matrix[1][0] = 4
// matrix[1][1] = 5
// matrix[1][2] = 6
多维数组可以扩展到三维甚至更高维度,但在实际应用中,二维数组是最常见的。
字符串的定义与操作
字符串是以'\0'
结尾的字符数组。C语言没有专门的字符串类型,字符串通常被定义为字符数组。
#include <stdio.h>
int main() {
char str[] = "Hello, World!"; // 定义一个字符串
printf("字符串内容: %s\n", str); // 使用%s格式化输出字符串
return 0;
}
// 运行结果:
// 字符串内容: Hello, World!
在上面的例子中,str
数组最后包含了一个'\0'
字符,它标志着字符串的结束。
常用字符串函数(strcpy、strlen、strcmp等)
C标准库提供了多种函数来操作字符串。以下是几个常用的字符串操作函数:
strcpy
:用于复制字符串。
#include <stdio.h>
#include <string.h>
int main() {
char source[] = "Hello";
char destination[20];
strcpy(destination, source); // 将source复制到destination
printf("复制后的字符串: %s\n", destination);
return 0;
}
// 运行结果:
// 复制后的字符串: Hello
strlen
:用于计算字符串的长度(不包括'\0'
)。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
int length = strlen(str); // 计算字符串的长度
printf("字符串长度: %d\n", length);
return 0;
}
// 运行结果:
// 字符串长度: 13
strcmp
:用于比较两个字符串。如果两个字符串相等,返回0;如果第一个字符串大于第二个,返回正数;否则返回负数。
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "apple";
char str2[] = "banana";
int result = strcmp(str1, str2); // 比较两个字符串
if (result == 0) {
printf("字符串相等\n");
} else if (result > 0) {
printf("str1大于str2\n");
} else {
printf("str1小于str2\n");
}
return 0;
}
// 运行结果:
// str1小于str2
数组与指针的关系
数组名在很多情况下表现为一个指向数组第一个元素的指针。因此,数组和指针在C语言中有着密切的关系。
#include <stdio.h>
int main() {
int arr[5] = {10, 20, 30, 40, 50};
int *ptr = arr; // 数组名作为指针
for (int i = 0; i < 5; i++) {
printf("arr[%d] = %d, *(ptr + %d) = %d\n", i, arr[i], i, *(ptr + i));
}
return 0;
}
// 运行结果:
// arr[0] = 10, *(ptr + 0) = 10
// arr[1] = 20, *(ptr + 1) = 20
// arr[2] = 30, *(ptr + 2) = 30
// arr[3] = 40, *(ptr + 3) = 40
// arr[4] = 50, *(ptr + 4) = 50
在这个例子中,ptr
指向数组的第一个元素。通过指针的算术操作,可以访问数组的每个元素。
总结:
本章介绍了C语言中数组与字符串的使用,包括一维数组和多维数组的定义与操作,字符串的基本概念及常用字符串函数的使用,以及数组与指针之间的关系。掌握这些内容能够帮助你更有效地管理和操作数据。在下一章中,我们将进一步探讨函数,为编写模块化和高效的C程序打下坚实的基础。