1. 一维数组
定义形式:
数据类型 数组名[整型常量表达式]
eg.
int apple[5];//数组定义
初始化形式(初始化有时会和定义在一起):
数组名[]={元素}
tips:[]内的长度可有可无
eg.
int apple[5]={1,3,5,7,9};//数组定义+初始化
tips:
数组的数据类型就是数组元素的数据类型
定义数组的[]内的整型常量表达式为数组长度
定义数组时[]内有整型数,初始化的时候可以省略。
定义数组时[]内不能是变量
同一数组内数组元素的数据类型相同
初始化的时候若元素数小于数组长度是可行的,剩余长度用0填满。
eg.
int a[10]={1,2,3}
7. 数组长度是在定义的时候根据[]内的数开拓内存,即数组的内存是根据 长度定死的,与其元素具体是什么无关。
以下为错误示例!
定义出错
int apple[];//错!【】内没数字
int len=5;
int apple[len];//错!【】内不能是变量!
初始化出错:
int apple[5];
apple={'A','P','P','L','E'};//错!数组元素为字符型,不是整型
char apple[4];
apple={'A','P','P','L','E'};//错!数组元素数多于数组长度,导致数据溢出,‘E’存不进去
数组的调用形式:
数组名[下标]
eg.
#include<stdio.h>
main()
{
int a[5];
a[]={1,2,3,4,5};
printf("%d",a[0]);
printf("%d",a[1]);
printf("%d",a[2]);
printf("%d",a[3]);
printf("%d",a[4]);
}
可以运行体验一下,也可以改动下标试试
tips:
下标的范围:从0开始,到数组长度-1
调用数组时以a[5]数组为例,a[0]是第一个数组元素
下标为0的为数组的第一个元素!(常考点!!!)
下标为1的为数组第二个元素,以此类推...
数组的每个元素对应一个下标,是一一对应关系
一维数组的常见操作:(会在第九章后进行具体化补充)
排序
插入和删除
查找
2. 二维数组
定义形式:
数据类型 数组名[常量表达式1][常量表达式2]
eg.
int a[2][3];
初始化形式:(两种均🉑️)
数组名[常量表达式1][常量表达式2]={元素1,元素2,...,元素n}
数组名[常量表达式1][常量表达式2]={{元素1,元素2,...,元素x1},{元素1,元素2,...,元素x2},...{元素1,元素2,...,元素xn}}
(内层{}表示每一行)
eg.
int a[2][3];
a[2][3]={1,2,3,4,5,6};
等价于
int a[2][3];
a[2][3]={{1,2},{3,4},{5,6}};
tips:
常量表达式1表示行,常量表达式2表示列
行、列下标均从0开始
数组大小为行乘列
常量表达式1代表的行优先存,存完行再存列
其余与一维数组类似
二维数组的引用:
数组名[行下标][列下标]
eg.
#include<stdio.h>
main()
{
int a[2][3];//定义
a[2][3]={{1,2},{3,4},{5,6}};//初始化
printf("%d",a[0][1]);//注意下标从0开始!
}
可以改动printf()中的下标,运行一下进行体验
tips:
重申一下,下标从0开始,此为常考点和常错点!
注意不要出现下标溢出情况!
3. 字符串处理
较复杂,在第九章后会具体化举例,此处先初步了解
字符串可以看作是字符数组,结尾自动加\0。
初步例举常用函数
strlen函数
作用:求字符串长度(不含‘\0’)
strlen(字符数组名)
strcpy函数
作用:字符串复制函数,将字符数组2复制到字符数组1
strcpy(字符数组名1,字符数组名2)
strcat函数
作用:将字符串2的内容连接到字符串1的内容后
strcat(字符数组名1,字符数组名2)
strcmp函数
作用: 比较字符串1和字符串2的大小,从左至右逐个字符比较ASCII码,直到出现不同或遇'\0'
str1<str2 返回-1 str1=str2 返回0 str1>str2 返回1
strcmp(字符数组名1,字符数组名2)
下一章节:函数(章节:7/9)
p.s.
小红书,知乎等平台搜索知识薪火站(或youzuos),也会上传相应笔记,感谢关注。
有建议欢迎提出!