第五章 数组

一、一维数组的定义1.一维数组的格式类型标识符 数组名 [常量表达式 ];注:1类型标识符可以是任何基本数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义。2.数组名必须是合法的标识符。3.常量表达式的值即为数组元素的个数。4.定义数组时不能超过最大值,且它们的编号从零开始,每个元素都是int类型。举例1.2.#define N 50 int b[N];注:这...
摘要由CSDN通过智能技术生成

一、一维数组

1.一维数组的格式

类型标识符 数组名 [常量表达式 ];

注:

  1. 1类型标识符可以是任何基本数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义。
  2. .数组名必须是合法的标识符。
  3. 常量表达式的值即为数组元素的个数。
  4. 定义数组时不能超过最大值,且它们的编号从零开始,每个元素都是int类型。

举例
①.
在这里插入图片描述
②.#define N 50 int b[N];

注:这是定义符号常量。表示此段程序从此行开始,所有的N都表示50。在预编译的时候,预处理器会对程序进行扫描,把其中所有的N都换成50 ,且行末不加分号。

2.一维数组的元素引用

  1. 不能一次引用整个数组,只能逐个引用数组的单个元素。
  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]=i
2+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 ]={
   123456789101112}

系统根据{ }中的个数,自动确定a数组的第一维大小为3。

3.二维数组的存储及引用

因为二维数组本质上是一维数组的每一个元素又是一个一维数组,而计算机内部存储一维数组采用的是连续存储单元。所以,二维数组的存储方式是“行优先”的连续存储,先逐个存储第0行上的所有元素,再逐个存储第1行上的所有元素,依此类推。

4.二维数组的输出输入

二维数组的输入和输出操作也是针对每一个元素进行,结合两个维度的下标变化,用循环嵌套实现。

法一:

#include<iostream>
using  namespace std;
int main( 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值