美文网首页
第4周:链表——4.1 可变数组

第4周:链表——4.1 可变数组

作者: hyt222 | 来源:发表于2017-06-18 18:14 被阅读0次

1.可变数组

C 语言数组大小固定,无法改变。

考虑用 C 语言实现一个可以变大小的 int 数组:可成长,能得到大小,能访问元素。

可以实现一个函数库,定义数组所需的函数:创建,回收,大小,访问元素,成长。

函数库


2.定义可变数组

可变数组定义

习惯定义为 *Array ,Array 为指针。这时无法定义本地变量,不要定义指针类型!!


3.创建 Array (array_create(int size))

创建可变数组函数,返回Array

为什么不返回指针?因为 a 是本地变量,返回指针的话在函数结束后本地变量消失,指针无效。

为什么不直接 malloc 结构的 size ? 会使得使用困难。传入指针返回指针有风险。

4.回收 Array(array_free(Array *a))

回收可变数组,无返回值。

5.得到 Array 大小(array_size(const Array *a))

得到数组大小,返回 int

封装得到数组大小的方法,保护内部实现细节,之后升级可以集中改动。

6.访问元素(array_at(Array* a,int index))

访问数组元素,返回指向数组元素的指针

可以通过 *array_at(&a,0)=10 做赋值,做左值把值写到数组里,也可以做右值赋值给左值。

可用 array_get() 和 array_set() 两个存取函数代替 array_at()

可用array_get得到数组中元素的值,array_set设置数组中元素的值

7.内存块 memory in block

const int BLOCK_SIZE = 20;

考虑index越界的情况

可自动增长,每次涨 BLOCK_SIZE 个单元。

8. Array 的成长(array_inflate(Array *a,int more_size))

成长more_size个单元,找一片新的空间复制原来的数组,删除原数组。无返回值

分配新空间,复制原数组到新空间,可用memcpy替换。

9. main

相关文章

  • 第4周:链表——4.1 可变数组

    1.可变数组 C 语言数组大小固定,无法改变。 考虑用 C 语言实现一个可以变大小的 int 数组:可成长,能得到...

  • scala04.数据结构(重点)

    第4章数据结构(重点练习章节) 4.1主要的集合特质 4.1主要的集合特质Scala同时支持可变集合和不可变集合,...

  • 3大数据结构类之——不可变数组NSArray

    OC的数组同样分为不可变数组和可变数组,可变数组是不可变数组的子类,先来说不可变速数组 数组查询的相关方法 数组枚...

  • scala数据结构与可变不可变

    数组:可变与不可变不可变数组是指数组的长度是不可变的,但是数组对应的元素是可变的可变数组的长度和元素都可以改变 不...

  • 快速创建一个可变数组的方法

    如何快速创建一个可变数组 不可变空数组: @[] 可变空数组: @[].mutableCopy

  • 数组类常用操作方法

    一、数组 二、不可变数组(NSArray) 三、不可变数组的操作 四、可变数组(NSMutableArray)的操作

  • ios 数组

    创建不可变数组 创建不可变数组

  • iOS数组,字典,集合

    数组 1、固定数组 2、可变数组 3、数组转换 字典 1、不可变字典 2、可变字典 集合 //NSSet 是无序的...

  • 2020-01-01培训

    字典 循环 跳出 集合 数组 字符串 1.数组变长2.链表增加删除麻烦3.不可变类型(字符串) 字符串切片 字符串...

  • swift基础-4-数组

    数组定义:OC:有值数组 空数组 不可变数组:NSArray可变数组:NSMutableArray swift:有...

网友评论

      本文标题:第4周:链表——4.1 可变数组

      本文链接:https://www.haomeiwen.com/subject/quybqxtx.html