C++基础教程8-一维数组

一.数组的概述

数组(array):从字面意思来看,是数据的组合。

从数学的角度来讲,就一些数字组合在一起,变成了集合。

特点1:数据类型相同的数据才能存放到一起,不同数据类型的数据是不能放在一起的。

例如·,整型和字符串型不能放在一起。

特点2:数据的位置是采用连续下标的方法进行存储,初始下标为0。

下标英文是index,例如 arr[index] 。

数组元素的下标是从0开始索引的。

二.定义一维数组的三种方法

①数据类型 数组名[数组长度];

int  arr[3];

②数据类型 数组名[数组长度]={值1,值2,…};

int  arr[3]={0,1,2};

③数据类型 数组名[ ]={值1,值2,…};

int arr[]={0,1,2};

1.定义一维数组的第一种方法

逻辑思路:先定义长度,相当于创造一个内存空间。我们再逐步地将数组一个一个地存进空间里。接着,我们就可以访问元素。

#include<iostream>
using namespace std;
int main ()
{
   int arr[3]; //定义数组长度 
   
   arr[0]=10;   //数组赋值 
   arr[1]=20;
   arr[2]=30; 

   //访问数据元素
   cout << arr[2] << endl;  //数组的第三个数,下标为2   
   return 0;
}

如果想要访问其他数组元素,修改下标就可以了。
在这里插入图片描述

2.定义一维数组的第二种方法

这种方法是将定义和赋值,是同时进行,可以减少代码行数。但是,第一种方法和第二种方法的结果一样,步骤也是一样,思路也没变,唯一改变的是定义和赋值同时进行。

#include<iostream>
using namespace std;
int main ()
{
   int arr[3]={10,20,30}; //定义数组,并且进行赋值 
   
   //访问数据元素
   cout << arr[2] << endl;  //数组的第三个数,下标为2 
     
   return 0;
} 

用循环遍历数组

#include<iostream>
using namespace std;
int main ()
{
   int arr[]={0,1,2};
   for(int i=0;i<3;i++)  //用循环遍历数组 
   {
   	    cout << arr[i] << endl;    //下标的范围变成了i的初始值到i最后的值 
   }
   return 0;
} 

在这里插入图片描述


案例:定义长度为4,但是元素只有3个,还是1个是没有赋值的。所以,我们可以从运行结果当中可以得出结论。

结论:没被赋值的内存位置,在循环遍历的时候,数组的内存位置会被默认传值为0

#include<iostream>
using namespace std;
int main ()
{
   int arr[4]={0,1,2};
   for(int i=0;i<4;i++)  //用循环遍历数组 
   {
   	    cout << arr[i] << endl;    //下标的范围变成了i的初始值到i最后的值 
   }
   return 0;
} 

在这里插入图片描述

3.定义一维数组的第三种方法

定义数组的时候,必须要有初始长度。

#include<iostream>
using namespace std;
int main ()
{
   int arr[]={0,1,2};
   for(int i=0;i<4;i++)  //用循环遍历数组 
   {
   	    cout << arr[i] << endl;    //下标的范围变成了i的初始值到i最后的值 
   }
   return 0;
} 

我把4去掉了之后,数组的长度就会被编译器识别为3,所以,第四次访问的数据就不在是数组里的元素了。
在这里插入图片描述

三.一维数组名的用途

1.统计整个数组内存中的长度

我们需要用到sizeof(数组名)来统计内存大小

#include<iostream>
using namespace std;
int main ()
{
   int arr[]={0,1,2};
   for(int i=0;i<4;i++)  //用循环遍历数组 
   {
   	    cout << arr[i] << endl; 
   	    cout <<"每个数组元素占用内存的大小为"  << sizeof(arr[i]) << endl;
   	    cout << endl; 
   }
   cout  << "整个数组占用的内存为" << sizeof(arr) << endl; 
   cout  << "数组中的元素个数为" << sizeof(arr)/sizeof(arr[0]) << endl; 
   return 0;
} 

运行结果
在这里插入图片描述

2.获取数组在内存中的首地址

查看数组的首地址,要用强制转换,例如

(int)arr :将数组元素转成十进制。

(int)&arr[下标]:查看数组中某一个的元素地址。

四.一维数组的案例

1.求最大值

流程图

在这里插入图片描述

#include<iostream>
using namespace std;
int main ()
{
   int arr[3]={40,30,70}; //创建一个数组 
   int max=0; //设置一个最大值的变量 
   for(int i=0;i<3;i++)  //循环遍历 
   {
   	  if(arr[i]>max)  //如果数组元素值比最大值还要大 
   	  {
   	  	  max=arr[i];  //那么数组元素值就赋值给max 
	  }
   } 
   cout <<"最大值为:" << max << endl;  //打印最大值 
   return 0;
} 

运行效果
在这里插入图片描述

2.元素逆置

#include<iostream>
using namespace std;
int main ()
{	
   int arr[4]={40,30,70,10}; //创建一个数组 
   int i;
   cout << "元素逆置前:";
   for(i=0;i<4;i++)  // 用了递增的方法,正向遍历 
   {
   	  cout << arr[i] << "\t";
   } 
   cout << endl << "元素逆置后:" ;
   for(i=3;i>=0;i--)  //用了递减的方法,反向遍历  
   {  
	  cout << arr[i] << "\t";
   }
   return 0;
} 

运行效果
在这里插入图片描述

五.一张图理解一维数组

在这里插入图片描述

六. 总结

①数组名的命名规范与变量命名规范一致,不要和变量重名。

例如,有了arr这个数组名之后,就不可以再出现跟arr一模一样的变量。

②数组中的下标从0开始索引,索引的意思是通过下标找到相对应的数据。

③数组是可以赋值的。

④数组名是一个常量,不可以进行赋值操作。

将arr[]定义为数组之后,是不可以对数组名arr进行赋值的,因为它已经在内存中占据了位置。

篇章

上一篇:C++基础教程7-循环结构
下一篇:C++基础教程9-二维数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值