一、数组的定义
数组是多个有序数据的集合(有序:地址连续),数组中的每一个元素都属于同一数据类型。
二、数组的声明
一维数组
一维数组声明的简单形式:
类型说明符 数组名 [整数类型表达式];
其中,类型说明符是数组元素的类型,数组名是一个标识符,符号“[]”内的整数类型表达式表示数组元素的个数,即数组的长度。如果整数类型表达式是常量表达式,其值必须大于0。
二维数组
二维数组声明的简单形式:
** 类型说明符 数组名 【行数 】【列数 】; **
其中,类型说明符是数组元素的类型,数组名是一个标识符;行数和列数是整数类型表达式,数组元素的个数是行数与列数的乘积。如果表示行数或列数的表达式是整数常量表达式,其值必须大于零。
三、数组的C语言实现
1、数组的定义
仿造java中的ArrayList,应该还会有一个自动增长因子。用于在添加时如果数组的长度不够,那么会自动的扩充。那么扩充多少就依赖于自动增长因子。
struct Arr{
int * pBase; //存储的是数组第一个元素的地址
int len; //数组所能容纳的最大元素的个数
int cnt; //当前数组有效元素的个数
//int increment; //自动增长因子
};
2、数组各个功能的实现
- 初始化
- 追加数据
- 插入数据
- 删除数据
- 获取数据
- 排序
- 显示数组全部内容
- 倒置
- 是否空
- 是否满
#include<stdio.h>
#include <stdbool.h>
#include<stdlib.h>
#include<malloc.h>
struct Arr{
int * pBase; //存储的是数组第一个元素的地址
int len; //数组所能容纳的最大元素的个数
int cnt; //当前数组有效元素的个数
//int increment; //自动增长因子
};
void init(struct Arr * , int); //初始化
bool append(struct Arr * , int); //追加
bool insert(struct Arr * , int , int); //插入
bool delete(struct Arr * , int , int *); //删除
int get(struct Arr * , int ); //获取
void sort(struct Arr *); //排序
void show(struct Arr *); //显示
void inversion(struct Arr *); //倒置(反转)
bool isEmpty(struct Arr *); //是否空
bool isFull(struct Arr *); //是否满
int main(void){
struct Arr arr;
int val;
printf("开始初始化数组...\n")