C语言 动态数组实现
浏览数:21 /
时间:2015年06月08日
一、概述
C语言是不能直接定义动态数组的,数组必须在初始化时确定长度。
如果要在程序运行时才确定数组的长度,就需要在运行的时候,自己去向系统申请一块内存用动态内存分配实现动态数组。
二、动态内存分配函数
1、malloc()函数
void *malloc(unsigned int size)
分配size个字节的内存空间,返回地址的指针,如果内存不够分,就返回空指针NULL。 注意:返回的指针是没有类型的,所以要使用得强制类型转换。
2、calloc()函数
void *calloc(unsigned int num, unsigned int size)
这个也是申请动态内存空间,不过就是分开了而已。 一共申请num个长度为size字节的内存空间。
3、free()函数
void free(void *p)
释放指针p内存空间。
这个很重要!!!!很重要!!!重要!!!
4、realloc()函数
void *realloc(void *p, unsigned int size)
给指针p申请的存储空间改为size个字节,返回的是存储空间首地址(指针)
三、动态数组实现
1、一维动动数组实现
dynamicArrayOneDimensional.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
|
2、二维动态数组的实现
dynamicArrayTwoDimensional.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
|