目录
为什么使用数组(Array)?
一维数组的定义
一维数组的初始化
一维数组元素的访问
一维数组元素的赋值
数组的逻辑存储结构
数组的物理存储结构
二维数组的定义和初始化
为什么使用数组(Array)?
一维数组的定义
一维
数组的定义
int
a[10];
定义一个有
10
个
int
型元素的一维数组
–
在内存中分配连续的存储空间给此数组
为什么数组下标从
0
开始?
–
使编译器的实现简化一点,且下标的运算速度少量提高
问题:如果希望下标从
1
到
10
而非从
0
到
9
,怎么办?
int
a[
11
];
int
a[
n
];
最好用宏定义
#
define
N
10
int
a[
N
];
#
define
N
11
int
a[
N
];
数组的
数据类型
——每一元素占内存空间的字节数
数组的
存储类型
——内存的动态、静态存储区或
CPU
的寄存器
一维数组在内存中占用的字节数为:数组长度×
sizeof
(基类型)
一维数组的初始化
未初始化的数组元素值是什么?
静态
数组和
全局
数组自动初始化为0值,否则,是随机数
一维数组的初始化
int
a[5] = {62, 74, 56, 88, 90};
int
a[5] = {62, 74};
int
a[5] = {62, 74, 0, 0, 0};
int
a[ ] = {62, 74, 56, 88, 90};
更高效的数组初始化方法
memset
(a, 0, sizeof(a));
•
用
sizeof(a)
来获得数组
a
所占的内存字节数
•
#include <string.h>
一维数组元素的访问
int
a[5] = {62, 74, 56, 88, 90};
一维数组的引用
数组名[
下标
]
允许快速随机访问
引用时下标允许是
int
型变量或表达式
62 74 56 88
a[i]
一维数组元素的赋值
问题:如何使两个数组的值相等?
int a[4] = {1,2,3,4};
int b[4];
b = a;
方法2:通过循环语句赋值
int i;
for (i=0; i<4; i++)
{
b[i] = a[i];
}
方法1:逐个元素赋值
b[0]=a[0];
b[1]=a[1];
b[2]=a[2];
b[3]=a[3];
更高效的数组赋值方法
memcpy
(b, a, sizeof(a));
•
数组
a
复制给数组
b
#include <string.h>
数组的逻辑存储结构
一维数组:
int a[5];
用一个下标确定元素位置
二维数组
:
int b[2][3];
用两个下标确定元素位置
数组的物理存储结构
二维数组的定义和初始化
int
a[ ][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int
a[ ][4] = {{1,2,3},{4,5},{6}};
int a[3][4] = {{1,2,3,0},{4,5,0,0},{6,0,0,0}};