目录
1.二维数组与多维数组
通过学习了一维数组后,那么二维数组和多维数组就很好理解,他们之间是有联系的。通俗的讲,二维数组就是由两个一维数组组成的。其定义形式为:
[存储类型符] 数据类型符 数组变量名[表达式1] [表达式2];
注意:存储类型符可省略不写,其中的表达式1和2都必须为整型常量表达式,不然则是定义错误的。
引用:
数组变量名 [下标1] [下标2]
赋值:在对数组变量名赋初始值时,一般有两种形式
- 分行初始化赋值:
[存储类型符] 数据类型 数组变量名 [行常量表达式] [列常量表达式]=
{{第0行初值},{第1行初值},{第2行初值}...{最后一行初值}};
例如:int a[2] [3]={{1,2,3},{4,5,6}};
2 .按元素在内存的排列顺序初始化赋值:
[存储类型符] 数据类型 数组变量名 [行常量表达式] [列常量表达式]={初始值};
例如:int a[2] [3]={1,2,3,4,5,6};
需要注意的是:当数组未在后面进行初始化赋值时,若在定义时省略整型常量表达式是错误的
int a[ ] [3]; //错误
int a[2] [ ]; //错误
int a[ ] [3]={1,2,3,4,5,6}; //正确
int a[2] [ ]={1,2,3,4,5,6}; //正确
多维数组:比如三维数组也可以看成是由两个二维数组组成的数组。例如:
#include <stdio.h>
int main()
{
int a[2][2][3]={//定义一个三维数组,在二维数组的基础上再加一个二维数组
{//第一个二维数组
{1,2,3},
{4,5,6}
},
{//第二个二维数组
{1,2,3},
{4,5,6}}
};
printf("%d",a[1][1][1]);//输出第二个二维数组的第二行第二列的数
return 0;
}
需要注意的是在初始化赋值时花括号要一一对应,数值之间用逗号隔开,两个二维数组之间也用逗号隔开。
2.字符串数组
首先,字符串常量是用双引号括起来的一组字符,,但字符串也是一种以'\0'结尾的字符数组,'\0'的作用就是结束标识字符串。
char str[ ]="china";
char str[ ]={'c','h','i','n','a','\0'};
char str[ ]={"china"};
以上三种形式都是等价的,数组的大小为6;但当整型常量表达式没省略时,数组的大小由[ ]里面的常量表达式决定。
3.字符串操作的常见函数
1.利用gets函数输入字符串
gets(字符数组变量名) //应包含头文件stdio.h(可包含空格字符)
#include <stdio.h>
int main()
{
char str[80];
gets(str);
printf("%s",str);
return 0;
}
当从键盘中输入I Love China!给str这个数组后,其输出结果为:
2. 字符串的输出
puts(字符串的地址); //应包含头文件stdio.h
#include <stdio.h>
int main()
{
char str[]="I Love China!";
puts(str);
puts("I Love SiChuan!");
return 0;
}
运行结果为:
3.字符串的长度
strlen(字符串的地址); //包含头文件string.h
这个函数时输出字符串的长度,但不包含‘\0’,字符串的长度从给定的字符串的起始地址开始到第一个'\0'结束
4.字符串的复制
strcpy(字符数组1,字符串2); //应包含头文件string.h
其功能是将字符串2复制到字符数组1中,但第一个参数必须是一个字符数组变量,第二个参数可以是包含字符串的字符数组变量,也可以是一个字符串常量
5.字符串的比较
strcmp(字符串1,字符串2); //包含头文件string.h
如果字符串1大于字符串2,返回一个正整数;如果字符串2大于字符串1,返回一个负整数;如果两者相等,返回0
比较规则:将两个字符串逐个按ASCII大小比较,直到遇到不同的字符或'\0'结束。如果全部字符都相等,则这两个字符串相等,如果出现不同字符,则以第一个不相同的字符的比较结果作为判断两个字符串的大小的标准。
6.字符串的连接
strcat(字符数组1,字符串2); //包含头文件string.h
功能:将字符串2连接到字符数组1的后面
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20]="12345",str2[]="6789";
strcat(str1,str2);
printf("%s",str1);
return 0;
}
输出结果为: