目录
1.一维数组的定义和初始化
2.一维数组在内存中的存储
3.一维数组的使用
4.一维数组的应用实例
1. 一维数组的定义和初始化
1.1 数组的定义
①. 数组是包含给定类型的一组数据,并将这些数据依次存储在连续的内存空间中。每个独立的数据被称为数组的元素(element)。元素的类型可以是任意类型。
②. 数组本身也是一个结构,其类型由它的元素类型延伸而来。更具体地说,数组的类型由元素的类型和数量所决定。
③. 如果一个数组的元素是 T 类型,那么该数组就称为 “ T 数组 ”。例如,如果元素类型为 int ,那么该数组的类型就是 “ int 数组 ”。然而,int 数组类型是不完整的类型,除非指定了数组元素的数量。如果一个 int 数组有 16 个元素,那么它就是一个完整的对象类型,即 “ 16 个 int 元素数组 ”。
1.2 一维数组的定义和初始化
①. 数组的定义决定了数组名、元素类型以及元素个数。
②. 其语法如下:<类型> 数组名 [ <元素数量> ]
③. 元素数量在方括号([ ])之间,它必须是大于 0 的 整型常量表达式。
④. 示例一
#include<stdio.h>
/** 数组初始化 */
int main()
{
int ar[5]; // 定义数组 ar 未初始化
int br[5] = { 12, 23, 34, 45, 56 }; // 定义数组 br 已初始化
int cr[5] = { 12, 23, 34}; // 定义数组 cr 未初始化的数值为 0
int dr[] = { 12, 23, 34, 45, 56, 67, 78, 89, 90, 100 };
int n = sizeof(dr) / sizeof(dr[0]); // 计算数组元素个数
for (int i = 0; i < 5; ++i)
{
printf("%2d ", br[i]);
}
printf("\n");
for (int j = 0; j < 5; ++j)
{
printf("%2d ", cr[j]);
}
printf("\n");
printf("n = %d \n", n);
return 0;
}
运行结果
⑤. 总结
1)数组的元素个数 n 可以通过 sizeof 计算得到,例如,数组 ar[ n ] 的中的元素个数 n = sizeof(ar) / sizeof(ar[ 0 ])。
2)C 中数组大小在编译时确定,编译系统按照定义为数组分配一段连续的存储单元,这段单元的大小也是不能改变的,因此数组大小不能用变量定义,而只能是一个正整数常量。
3)在 C99 标准中,定义数组的 <元素数量> 可以是变量,多为数组也一样。如 int ar[ n ]; int aar[ n ][ m ]; n 和 m 都可以是变量。 注:vs 不支持 C99 标准。
2. 一维数组在内存中的存储
2.1 图解
3. 一维数组的使用
3.1 一维数组的使用:
①. 数组在存储单元中是顺序连续存放的,任何一个元素都是单独访问,其标识方法是用数组名和下标。 数组名 [ 整型表达式 ];整型表达式可以是变量,也可是常量,但必须是整型类型。
②. 示例一
#include<stdio.h>
/** 一维数组的使用 */
int main()
{
const int n = 5; // 常整型 只可读不可写
int ar[5] = {0};
for (int i = 0; i < n; ++i) // 初始化 给数组赋值
{
ar[i] = i;
}
for (int i = 0; i < n; ++i) // 打印 数组元素以及对应的地址
{
printf("0x%p == > %d \n", &ar[i], ar[i]);
}
return 0;
}
运行结果
3.2 其他类型数组
③. 示例二
#include<stdio.h>
int main()
{
const int ar[5] = { 1,2,3,4,5 }; // 常性数组 只可读不可写(不能变)
char str1[10] = {"shuzu"}; // 10 个 char 型的元素
char str2[10] = {'s', 'h', 'u', 'z', 'u'}; // 10 个 char 型的元素
int* par[10] = { NULL }; // 10 个 int* 型元素
char* pstr[10] = { NULL }; // 10 个 char* 型元素
return 0;
}
调试窗口
④. 示例三
#include<stdio.h>
int main()
{
int a = 10, b = 20, c = 30, d = 40, e = 50;
int* par[5] = { &a,&b,&c,&d,&e }; // 数组存放的是各元素的地址
return 0;
}
调试窗口
4. 一维数组的应用实例
查表法是将一些事先计算好的结果,存储在常量数组中,用到是直接按下标取数据,以节省运行时的计算时间,是以空间换时间。