首页 > 代码库 > 6、C语言——数组

6、C语言——数组

数组

一、数组的基础知识:

        1、同一数组中的所有元素都属于同一种数据类型(int char float),数组元素用数组名和相应的下标来确定——一批类型相同的数据的集合

        2、一个数组元素其实就是一个变量(可以称为带下标的变量)

二、一维数组:

      一维数组的定义和引用【只有一个下标】

        1、一维数组的定义格式:

            类型名 数组名[常量表达式];

                常量表达式是由加减乘除所连接的表达式,不能是变量

                数组名应该遵循用户定义标识符

 

           定义数组有四个注意:

               1)数组名属于用户定义标识符。要遵守标识符命名规则

                 2)定义一维数组时数组名后必须用一个方括号([])将常量表达式括起来,常量表达式的值表示所定义数组共有多少个元素(数组长度或数组的大小或数组元素的个数)

                 3)定义数组时方括号中的表达式不能含有变量。另外表达式的值必须要大于零且为正整数

               4)C语言每个数组在内存中分配空间时是连续分配的

           注意:

              int N = 9;

              int a[N];此时的N是变量,此书写格式错误

              #define N 9

              int a[N];此时的N是符号常量,此写法是对的

2、一维数组元素的引用格式:
数组必须先定义后使用
数组不能整体使用,必须使用其元素
数组名[下标]
注:C语言中不能对数组进行整体引用只能单独引用其中的元素。引用时下标可以是表达式

记住:数组元素的下标值在(0~n-1之间)
3、一维数组的初始化
格式:
类型名 数组名[常量表达式]={初值1,初值2,...};
注意:
1)定义一维数组时可以讲个元素的初始值依次放在一对{}中赋给数组(必须用{}将初值括起来,且初值之间用一个逗号分隔)。
2)赋的值多则出错;少则补0
3)定义赋初值的个数等于数组长度,则数组长度可以省略
4)一个也不给则是随机值
5)只能在定义数组的同时用{}给数组元素整体赋值

二维数组的定义和引用(有两个下标)
1、二维数组的定义格式:
类型名 数组名[常量表达式1][常量表达式2]

注:1)数组名要遵守用户自定义标识符的命名规则
2)定义二维数组第一个方括号常量表示行数,第二个方括号常量表示列数
3)定义数组时方括号的表达式不能含有变量,且表达式的值必须是大于0的正整数
4)在内存中二维数组元素的存放也是连续的先行后列原则

2、二维数组元素的引用
数组名[行下标][列下标]
注:
1)不能整体引用,只能引用其中的元素
2)引用二维数组元素时,必须有行下标和列下标两个下标。从0开始依次加1.

3、二维数组的初始化
方法1:将初值依序放在一对{}中,与一维数组初始化格式相同
方法2:定义二维数组同时,按行初始化每一行初值均用一对{}括起来,采用嵌套的{}格式。
注意:定义二维数组的同时给数组初始化,则可以省略行数,但列数不能省略
int a[][3];此语句错误,给数组初始化的时候可以将二维数组的行数省略
初始化中的数据是按照列下标的个数进行划分——按列划分

三、字符数组
C语言中没有字符串变量,故采用
方法1:字符数组来存放
方法2:字符型指针变量

1、字符数组的初始化
char s[] = {‘a‘,‘b‘,‘c‘,‘d‘};
与其它类型数组的初始化方式一样,只是其初始值是字符

2、字符串
因为字符串最后都有一个字符串结束符(‘\0’),所以用字符数组来存放字符串是一定要有一个元素存放结束符‘\0‘
1)字符串常量后有一个‘\0’
如:“abcd” 由5个字符组成
“”等价与“\0”,是一个空字符串
‘\0‘是字符型,"\0"空串是由一个‘\0‘字符型组成

2)用字符串给一字符数组进行初始化有三种情况:
方法1:char a[]="abcd";
方法2:char a[]={"abcd"};
只有双引号出现的时候才能可以将花括号省略
方法3: char a[]={‘a‘,‘b‘,‘c‘,‘d‘,‘\0‘};
字符串使用
1)字符串存储(赋值)四种方法
方法1:scanf();键盘输入
char a[10];
scanf("%s",a);
注:用%s格式输入时,遇到空格符或回车符则自动结束输入
方法1:printf();输出
如:char s[10];
scanf("%s",s);输入:ab cd<回车>
printf("%s",s);
注意:输出时则从当前地址开始直到遇到结束符‘\0‘为止

方法2:gets()键盘输入
格式:#include<stdio.h>
gets(字符数组)
功能:读取一个字符串赋给字符数组
注:
1)用该函数输入字符时,只有遇到回车符系统才结束读取字符
2)不论是用%s还是gets()在输入时均不需要输入双引号,若输入时用来双引号则双引号也作为字符串的有效字符、

puts()输出
格式:#include<stdio.h>
gets(字符数组或字符串常量)
功能:在屏幕上输出字符数组中的字符
注:用该函数输出与用%s格式输出一样,只是该函数将‘\0‘转成‘\n‘输出
方法3:字符串初始化
char a[]="abcd";
char a[]={"abcd"};
char a[]={‘a‘,‘b‘,‘c‘,‘d‘,‘\0‘};

2)字符串函数,修改字符1
第一个函数:strcat()
格式:#include<string.h>
strcat(字符数组1,字符数组2)
功能:“连接”
第一个‘\0‘开始连入
第二个串‘\0‘也连入
首地址

第二个函数:strcpy()修改字符1
格式:#include<string.h>
strcpy(字符数组1,字符数组2)
功能:将字符数组2中的字符串替换到字符数组1中。函数值为字符数组1的首地址
第一个字符开始复制
第二个字符的‘\0‘也复制过去

第三个函数:strcmp()
格式:#include<string.h>
strcmp(字符数组1,字符数组2)
功能:函数返回值相同位置不同字符的ASCII码差值
返回的是一个数值

第四个函数:strlen()
格式:#include<string.h>
strlen(字符数组)
功能:求出字符数组的实际长度(不包括结束符)

6、C语言——数组