数组
一、数组的基础知识
1、同一数组中的所有元素都属于同一种数据类型(int char float),数组元素用数组名和相应的下标来确定
2、一个数组元素其实就是一个变量(可以称为带下标的变量)
3、一批类型相同的数据的集合
二、一维数组
1、一维数组的定义格式
类型名 数组名[常量表达式];
注意:
1)常量表达式的值表示所定义数组共有多少个元素(数组长度或数组的大小或数组元素的个数)
2)定义数组时方括号中的表达式不能含有变量。另外表达式的值必须要大于零且为正整数
3) 常量表达式是由加减乘除所连接的表达式,不能是变量
4)注意:
int N = 9; int a[N]; 此时的N是变量,此书写格式错误
#define N 9 int a[N]; 此时的N是符号常量,此写法是对的
2、一维数组元素的引用格式
数组名[下标]
注意:
1)C语言中不能对数组进行整体引用只能单独引用其中的元素。引用时下标可以是表达式
2)数组必须先定义后使用
3)数组不能整体使用,必须使用其元素
4)数组元素的下标值在(0~n-1之间)
3、一维数组的初始化格式
类型名 数组名[常量表达式]={初值1,初值2,...};
注意:
1)定义一维数组时可以讲个元素的初始值依次放在一对{}中赋给数组(必须用{}将初值括起来,且初值之间用一个逗号分隔)
2)赋的值多则出错;少则补0
3)定义赋初值的个数等于数组长度,则数组长度可以省略
4)当一个值都不赋,则是随机值
5)只能在定义数组的同时用{}给数组元素整体赋值
三、二维数组
1、二维数组的定义格式
类型名 数组名[常量表达式1][常量表达式2]
注意:
1)定义数组时方括号的表达式不能含有变量,且表达式的值必须是大于0的正整数
2)在内存中二维数组元素的存放也是连续的先行后列原则
2、二维数组元素的引用
数组名[行下标][列下标]
注意:
1)不能整体引用,只能引用其中的元素
2)引用二维数组元素时,必须有行下标和列下标两个下标。从0开始依次加1.
3、二维数组的初始化
方法1:将初值依序放在一对{}中,与一维数组初始化格式相同
方法2:定义二维数组同时,按行初始化每一行初值均用一对{}括起来,采用嵌套的{}格式。
注意:
1)定义二维数组的同时给数组初始化,则可以省略行数,但列数不能省略
2)int a[][3];此语句错误,给数组初始化的时候可以将二维数组的行数省略
3)初始化中的数据是按照列下标的个数进行划分——按列划分
四、字符数组
1、字符数组的初始化——与其它类型数组的初始化方式一样,只是其初始值是字符
char s[] = {'a','b','c','d'};
2、字符串
1)字符串常量后有一个‘ ’
如:“abcd” 由5个字符组成;“”等价与“ ”,是一个空字符串;' '是字符型," "空串是由一个' '字符型组成
注:因为字符串最后都有一个字符串结束符(‘ ’),所以用字符数组来存放字符串是一定要有一个元素存放结束符' '
2)用字符串给一字符数组进行初始化有三种情况:
方法1:char a[]="abcd";
方法2:char a[]={"abcd"};
方法3: char a[]={'a','b','c','d',' '}
注:只有双引号出现的时候才能可以将花括号省略
3、字符串使用
1)字符串存储(赋值)四种方法
方法1:scanf();键盘输入
char a[10]; scanf("%s",a); 注意:用%s格式输入时,遇到空格符或回车符则自动结束输入
方法1:printf();输出
char s[10]; scanf("%s",s); printf("%s",s); 注意:输出时则从当前地址开始直到遇到结束符' '为止
方法2:gets()键盘输入
#include<stdio.h> gets(字符数组或字符串常量) 功能:读取一个字符串赋给字符数组 注意: 1)用该函数输入字符时,只有遇到回车符系统才结束读取字符 2)不论是用%s还是gets()在输入时均不需要输入双引号,若输入时用来双引号则双引号也作为字符串的有效字符、
方法2:puts()输出
功能:在屏幕上输出字符数组中的字符
注意:用该函数输出与用%s格式输出一样,只是该函数将' '转成' '输出
方法3:字符串初始化
char a[]="abcd";
char a[]={"abcd"}; char a[]={'a','b','c','d',' '};
2)字符串函数
第一个函数:strcat()
#include<string.h> strcat(字符数组1,字符数组2) 功能:“连接” 第一个' '开始连入 第二个串的' '也连入
第二个函数:strcpy()
#include<string.h> strcpy(字符数组1,字符数组2) 功能:将字符数组2中的字符串替换到字符数组1中。函数值为字符数组1的首地址 第一个字符开始复制 第二个字符的' '也复制过去
第三个函数:strcmp()
#include<string.h> strcmp(字符数组1,字符数组2) 功能:函数返回值相同位置不同字符的ASCII码差值 返回的是一个数值
第四个函数:strlen()
#include<string.h> strlen(字符数组) 功能:求出字符数组的实际长度(不包括结束符)