一、一维数组
1、数组概念
(1)数组定义:一组有序的、类型相同的数据的集合。
(2)数组名:数组的名字,数组名代表数组的起始地址。
(3)数组元素:索引或下标标识,索引或下标从0开始。
(4)数组长度: 只能是常量和常量表达式(大于0)。
(5)数组在内存中的存放: 存放时先存放到低字节,再存到高字节。每个数据元素占用的字节数,就是基类型的字节数,一个元素占4个字节
2、整型数组初始化
(1) extern和static数组元素自动初始化为0。
(2)数组初始化是在数组定义时给元素赋初值
(3)一般形式:类型 数组名[常量表达式]={值,值…};
(4)数组初始化时注意点:
①元素之间用逗号隔开;如:int ary[10]={1,2,3};
②可以只给部分元素赋值,剩余元素赋0值;int ary[10]={0,1,2,3,4,5,6,7,8,9};
③给全部元素赋值时,可以不说明元素的个数;如:int ary[ ]={0,1,2,3,4,5,6,7,8,9}
④初始化的数据个数允许少于数组的长度,但不能多于数组的长度
(5)数组初始化示例
--1)一般初始化
#include
int main()
{
//数组初始化方式1
int ID[3];
ID[0]=1;//下标=数组元素个数-1
ID[1]=2;
ID[2]=3;
printf("%d%d%d\n",ID[0],ID[1],ID[2]);
//数组初始化方式2
int ID[3]={1,2,3};
printf("%d%d%d\n",ID[0],ID[1],ID[2]);
return 0;
}
--2)for循环初始化
#include
int main()
{
char alpha[26];
int ary[10];
int i, j;
for(i = 65,j = 0; i < 91; i++,j++)
{
alpha[j] = i;
printf("The character is %c \n", alpha[j]);
}
for ( i = 0; i < 10; i++)
{
scanf("%d",&ary[i]);
}
return 0;
}
3、整型数组元素引用--元素地址输出
#include
int main()
{
int ID[3]={1,2,3};//数组初始化
int i;//i可先定义,在for循环内定义有可能报错
for(i=0;i<3;i++)
{
printf("%p\n",&ID[i]);//%p 表示输出的结果是指针(即变量的地址值)
}
return 0;
}
运行结果:
0019FF34
0019FF38
0019FF3C
结果说明,一个int数组元素占4字节,数组元素地址相差4Byte,若换为double型,则数组地址相差8Byte。
4、使用
(1)允许使用变量的地方都可以使用数组元素
(2)可以使用整型表达式引用数组的元素:如--数组名[整型表达式]
普通变量赋值: int b; b=5;
数组变量赋值:int a[4]; a[2]=5;
(3)数组名代表数组首地址,故可不必再加&,加也可以。
(4)不能直接将一个数组赋给另一个数组,不能为数组整体赋值。
二、二维数组
1、二维数组概念
可看成是由两个一维数组组成的数组,类似于一个由行和列组成的表格
2、声明 类型说明符 数组名[常量表达式1][常量表达式1];
例如:int temp[4][3];
3、二维数组的初始化
数据类型 数组名[常量表达式1][常量表达式2]={初始化数据}
(1)分行给二维数组赋初值。
如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
(2)可以将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。
如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(3)可以对部分元素赋初值。
如:int a[3][4]={{1},{5},{9}};
如:int a[3][4]={{1},{0,6},{0,0,11}};//对各行中的某一元素赋初值
如:int a[3][4]={{1},{5,6}};//只对某几行元素赋初值。
(4)如果对全部元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
如: 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,7,8,9,10,11,12};
(5)在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。如:int a [][4]={{0,0,3},{},{0,10}};
4、二维数组引用
(1)存储形式
二维数组在内存中是按行的顺序存放的,即先存放第一行的元素,再存放第二行的元素。
a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2]…
(2)引用格式
数组名[行下标][列下标] 例如:ary[1][3] = 12;
(3)示例
--1)数组打印输出0到8
#include
int main( )
{
int a[3][3]={0,1,2,3,4,5,6,7,8};
int i=0,j=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("b[%d][%d]=%d ",i,j,a[i][j]);
}
printf("\n");
}
return 0;
}
--2)数组默认初始化,打印输出0到8
#include
int main( )
{
int a[3][3]={0};
int i=0,j=0,temp=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
a[i][j]=temp;
temp+=1;
printf("b[%d][%d]=%d ",i,j,temp-1);
}
printf("\n");
}
return 0;
}
运行输出:
b[0][0]=0 b[0][1]=1 b[0][2]=2
b[1][0]=3 b[1][1]=4 b[1][2]=5
b[2][0]=6 b[2][1]=7 b[2][2]=8
编辑 2020-4-24 23:37
注:本文旨于作为自己的学习笔记,不作他用。