一、一维数组
1.一维数组的格式
类型标识符 数组名 [常量表达式 ];
注:
- 1类型标识符可以是任何基本数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义。
- .数组名必须是合法的标识符。
- 常量表达式的值即为数组元素的个数。
- 定义数组时不能超过最大值,且它们的编号从零开始,每个元素都是int类型。
举例
①.
②.#define N 50 int b[N];
注:这是定义符号常量。表示此段程序从此行开始,所有的N都表示50。在预编译的时候,预处理器会对程序进行扫描,把其中所有的N都换成50 ,且行末不加分号。
2.一维数组的元素引用
- 不能一次引用整个数组,只能逐个引用数组的单个元素。
- 值必须在数组定义的下标范围内,否则会出现下标越界错误。
3.一维数组的输入和输出
对于一个数组a来说
cout<<a;
错误
(一维数组的输出)
int a[20];
for(int i=0;i<20;i++) cout<<a [i];
(一维数组的输入)
int a[20];
for(int i=0;i<20;i++) cout<<a[i];
(给所有或者部分元素赋值)
int a[10]={ 0,1,2,3,4,5,6,7,8,9};
int a[10]={0,1,2,3,4};//部分赋初值,后面的元素自动初始化为0
int a[ ]={1,2,3,4,5};//不定义数组长度直接根据赋值个数定
直接赋值
int h[100],a[20];
for(i=0;i<100;i++) h[i];
for(i=0;i<20;i++) a[i]=i2+1;*
①memse 函数
memet函数是数字节进行赋值,一般用在char型数组如果是int类型的数组,一般赋值为0和1。使用前须包含头文件:#include<cstring>。
②fill
fill函数是给数组“按元素”进行赋值,可以是整个数组,可以是部分连续元素,可以赋任何值。使用前需要包含头文件:# include< algorithm>。如,“fil(a,a+10,5);”就是将a数组的前10个元素赋值为5。
#include< iostream>
#include<cstring>
using namespace std
int main()(
inta[10],b[10],c[10],d[10],i;
memset(a,0, sizeof(a));//将a数组所有元素均赋值为0
for(i= 0; i < 9; 1++) cout <<a[i] <<" ";
cout << a[9]<< endl;
memset(b, 1, sizeof(b));//将b数组所有元素均赋值为二进制数2^0+2^8+2^16+2^24=16843009
for(i= 0; 1<9: 1++) cout << b[i]<<" ";
cout << b[9]< <endl;memset(c,0, 5);//将c数组前5个字节都赋值为0,所以只能确定c[0]=0,其他元素值不确定
for(i=0;i<9;i++)cout<<c[i]<<" ";
cout << c[9]<< endl;
3.一维数组的存储结构
数组在计算机内存单元中是连续存储的。程序一旦执行到数组的定义语句,就会开辟出若干字节的内存单元。如果每个元素都是int类型则占用四个字节。
二、 二维数组
1.二维数组的定义和初始化
二维数组的一般格式:
类型标识符 数组名 [常量表达式1][常量表达式2]
注:1.常量表达式1的值表示第一维大小,常量表达式2的值表示第二维大小,常量表达式1和常量表达式2的乘积就是二维数组的元素个数。
例如int h[4][5];
2.二维数组的初始化赋值
例如
①
int a[2][3]={
{
1,2,}},{
4,5,6}};//分行初始化
int a[2][3]={
1,2,3,4,5,6)//不分行初始化
以上两种初始化都相当于下面6个语句:
a[0][1]=1;a[0][1]=2;a[0][2]=3;
a[1][0]=4;a[1][1]=5;a[1][2]=6;
也可以给数组中的部分元素初始化。
例如:
②
int a[2][3]={
{
1,2},{
4}};
第一行只有2个初值,按顺序分别赋值给a[0][0]和a[1][1],第二行的初值4赋值给a[1][0],其他元素默认为0。
在定义二维数组时,可以省略第一维的大小,但是第二维的大小不能省略。例如"int a[ ][5];”是允许的,被省略的第一维大小根据初值的个数由系统来确定。
int a[ ][ 4 ]={
1,2,3,4,5,6,7,8,9,10,11,12};
系统根据{ }中的个数,自动确定a数组的第一维大小为3。
3.二维数组的存储及引用
因为二维数组本质上是一维数组的每一个元素又是一个一维数组,而计算机内部存储一维数组采用的是连续存储单元。所以,二维数组的存储方式是“行优先”的连续存储,先逐个存储第0行上的所有元素,再逐个存储第1行上的所有元素,依此类推。
4.二维数组的输出输入
二维数组的输入和输出操作也是针对每一个元素进行,结合两个维度的下标变化,用循环嵌套实现。
法一:
#include<iostream>
using namespace std;
int main(