一维数组
数组,它可以存储一个固定大小的相同类型元素的顺序集合。
数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
声明一个数组变量,比如 num,然后使用 num[0]、num[1]、…、num[N] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
声明数组
在 C 中要声明一个数组,需要指定元素的类型和元素的数量,写法如下所示:
type arrayName [ arraySize ];
这叫做一维数组。arraySize 必须是一个大于零的整数常量,type 可以是任意有效的 C 数据类型,例如:int,char,double等。
简单举例如下:
int arry[5]; //表示int类型数据,数组大小为5
初始化数组
数组的初始化:在数组创建时,我们尽量为数组初始化
把数组定义为全局数据(定义在主函数之外),那么编译器会帮你把数组初始化位0,但是如果不是全局数据,那么数组数组元素的值就是不确定的了
- 使用一个初始化语句,
- 省略掉了数组的大小,数组的大小则为初始化时元素的个数
eg:
int arr1[3] = {1, 2, 3}; //满初始化
int arr2[] = {1, 2, 3}; //省略数组大小,由元素个数决定;
int arr3[3] = {1, 2}; //缺少的默认为0
int arr4[3] = {1, 2, 3, 4}; //错误,不能超过数组长度
char arr5[3] = {'a', 98, 'c'};//因为是字符类型,所以98其实就是字符'b'
char arr6[] = "abcdef"; //直接用双引号写字符串
访问数组元素
数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。
数组是使用下标来访问的,下标是从0开始。
数组的大小可以通过计算得到。(size = sizeof(arr)/sizeof(arr[0]));
#include "stdafx.h"
//数组:数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
//所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素
//不同数据类型,数量多,可以使用结构体struct
//定义,大小,初始化,访问
int main()
{
//int变量先定义后初始化
int a;
a = 10;
//变量a的大小就是int的大小
printf("sizeof(a) = %d\n", sizeof(a));
printf("sizeof(int) = %d\n", sizeof(int));
int arr[10]={0}; //a[0]--a[9]
printf("sizeof(arr) = %d\n", sizeof(arr)); //sizeof(arr)等于求解int*10大小
//构造多类型结构体
struct
{
int a1;
long b;
char c;
double d;
}Var;
for(int i=0;i<10;i++)
{
arr[i] = a++;
//循环打印每个地址的数据,以及相应的地址
printf("arr[%d]=%d,addr:%p\n", i, arr[i],&arr[i]);
}
getchar();
return 0;
}
数组三要素
数组的声明中,己经把数组访问的三要素,均己表示出来了,三要素就是,起始
位置,移步刻度,终止位置(范围)。
基于起始位置偏移 0 个单位处,开始存放数据,故下标从 0 处开始。
变长数组是指用整型变量或表达式声明或定义的数组,而不是说数组的长度会随时
变化,变长数组在其生存期内的长度同样是固定的。
注意:变长数组有平台差异性,以 linux 平台为准。