C语言数组与字符串
在C语言中,数组和字符串是存储和处理数据的重要方式。数组用于存储相同类型的多个元素,而字符串则是特殊的字符数组,以空字符('\0'
)结尾。
1. 数组
数组是相同类型数据的集合,存储在连续的内存位置。
1.1 数组的定义
数组定义的一般形式为:
数据类型 数组名[元素个数];
例如,定义一个包含5个整数的数组:
int scores[5];
定义时可以初始化数组:
int numbers[] = {
1, 2, 3, 4, 5};
如果初始化时元素个数少于数组定义的大小,剩余元素会被自动初始化为0。
1.2 数组的访问和修改
通过索引(从0开始)访问或修改数组元素:
int thirdElement = numbers[2]; // 访问第三个元素
numbers[2] = 30; // 修改第三个元素的值为30
1.3 数组的内存布局
数组在内存中连续存储,数组名是指向数组第一个元素的指针。例如,对于数组int arr[5]
,在32位系统中,每个整数占用4字节,数组在内存中的布局可能是这样的:
内存地址 | 值
0x1000 | arr[0]
0x1004 | arr[1]
0x1008 | arr[2]
0x100C | arr[3]
0x1010 | arr[4]
可以使用指针算术来操作数组:
int *ptr = arr;
printf("第二个元素:%d\n", *(ptr + 1)); // 输出20
2. 字符串
字符串是特殊的字符数组,以空字符('\0'
)结尾。
2.1 字符串的表示
字符串可以用字符数组的方式表示:
char site[] = "RUNOOB";
这里的site
数组会自动在末尾添加空字符'\0'
,所以实际上数组的大小是7。
2.2 字符串的初始化
字符串可以在声明时初始化:
char str[] = "Hello World";
编译器会自动计算数组的大小并添加空字符。
2.3 字符串的访问
通过索引访问字符串中的字符:
char letter = str[0]; // 'H'
2.4 字符串的操作
C语言提供了一系列的库函数来操作字符串,这些函数定义在string.h
头文件中。常用的字符串操作函数包括:
strcpy(s1, s2)
:复制字符串s2
到字符串s1
。strcat(s1, s2)
:将字符串s2
连接到字符串s1
的末尾。strlen(s1)
:返回字符串s1
的长度。strcmp(s1, s2)
:比较两个字符串,如果s1
等于s2
返回0,如果s1
小于s2
返回小于0的值,如果s1
大于s2
返回大于0的值。strchr(s1, ch)
:返回一个指针,指向字符串s1
中字符ch
的第一次出现的位置。strstr(s1, s2)
:返回一个指针,指向字符串s1
中字符串s2
的第一次出现的位置。
示例代码
#include <stdio.h>
#include <string.h>
int main() {
char str1[14] = "runoob";
char str2[14] = "google";
char str3[14];
strcpy(str3, str1);
printf("strcpy( str3, str1) : %s\n", str3);
strcat(str1, str2);
printf("strcat( str1, str2): %s\n", str1);
int len = strlen(str1);
printf("strlen(str1) : %d\n", len);
return 0;
}
输出:
strcpy( str3, str1) : runoob
strcat( str1, str2): runoobgoogle
strlen(str1) : 12
通过以上内容,你应该对C语言中的数组和字符串有了深入的了解。掌握数组和字符串的操作对于编写C语言程序至关重要。
关于C语言数组和字符串的内容,咱们到这告一段落。
希望能对你有帮助。
下期见!