目录
一、字符串
在C语言中,是将字符串作为字符数组来处理的,即字符串中的字是逐个存放到数组元素中的。为测量字符串实际长度,C语言规定了一个“字符串结束标志”,以字符 '\0' 作为结束标志。系统对字符串常量也会自动加一个 '\0' 作为结束符。例 char s[ ] = "hello"; 中共有5个字符,但在内存中占6个字节,最后一个字节 '\0' 是由系统自动加上的字符串结束符。字符串作为一维数组存放在内存中。定义字符数时应保证数组长度始终大于字符串实际长度。
1、字符串初始化
(1)char s[] = {"hello"}; 和 char s[] = {'h','e','l','l','o','\0'}; 的初始化等价,都是字符串的初始化。
(2)char s[] = "hello";
2、字符串输入输出
字符串的输入输出所用格式符“%s”来实现整个字符串的一次输入或输出。
char s[] = "hello";
printf("%s\n",s);
3、字符串处理函数
在使用库函数提供的字符串函数前,需要添加头文件#include<string.h>。
(1)puts(字符串数组名)
(2)gets(字符串数组名)
(3)strlen(字符串数组名)
功能:计算字符串长度。
(4)strcat (str1, str2)
功能:连接两个字符数组中的字符串,把字符串str2接到字符串str1的后面,结果放在字符数str1中。
char s1[] = "hello";
char s2[] = "world";
strcat(s1,s2);
puts(s1);
输出结果:
helloworld
(5)strcpy(str1,str2)
功能:复制,将字符串str2复制到字符数组str1中。
(6)strcmp(str1, str2)
功能:比较字符串str1和字符串str2。
字符串比较的规则与其他语言中的规则相同,即对两个字符串自左至右逐个字符相比(按 ASCII 码值大小比较),直到出现不同的字符或遇到'\o' 为止。
比较的结果由函数值:
① 如果str1= str2,则函数值为0。
② 如果str1> str2,则函数值为一个正整数。
二维数组
二维数组定义的一般形式为:类型说明符 数组名[常量表达式][常量表达式]
① 类型说明符 --- 用来说明数组中存储数据的类型
② 数组名 --- 标识符
③ 常量表达式 --- 行 --多少行
④ 常量表达式 --- 列 --多少列
1、二维数组初始化
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};//全部初始化
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};//全部初始化
int a[3][4] = {1,2,3,4,5,6};//部分初始化
int a[3][4] = {{1,2},{5,6},{9,10}};//全部初始化
*赋值:使用循环结构,循环体中有scanf语句。
12 for(i = 0;i<n1;++i)
13 {
14 for(j = 0;j<n2;++j)
15 {
16 scanf("%d",&a[i][j]);
17 }
18 }
2、数组元素的引用
在使用数组元素时应该注意,下标值应在已定义的数组大小的范围内 。
数组名 [行][列];
0 1 2 3
+---+---+---+---+
0| 1 2 3 4
1| 5 6 7 8
2| 9 10 11 12
注意:
① C语言中,并不存在真正的二维数组,都是用一维数组模拟的。
② 二维数组的本质:实际上是一维数组类型的一维数组。
③ 二维数组数据存储时,按行优先存储。