0%

C++中的数组

概念

所谓数组,就是一个集合,里面存放了相同类型的数据元素

特点:

  • 数组中的每个数据元素都是相同的数据类型
  • 数组是由连续的内存位置组成的

一维数组的定义方式

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

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

  • 数据类型 数组名[ ] = {值1,之2,...};

方式1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;

int main()
{
int arr[5];
arr[0]=0;
arr[1]=10;
arr[2]=20;
arr[3]=30;
arr[4]=40;
cout<<arr[2]<<endl;
return 0;
}

方式2

1
2
3
4
5
6
7
8
9
10
#include<iostream>
using namespace std;

int main()
{
int arr[5] = {0,10,20,30,40};
cout<<arr[2]<<endl;
return 0;
}

方式3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;

int main()
{
int i;
int arr[]={0,10,20,30,40};
for(i=0;i<5;i++) //利用for循环输出,注意i得范围,此处i最大为4
{
cout<<arr[i]<<endl;
}

return 0;
}

一维数组数组名

用途:

  • 可以统计整个数组在内存中的长度
  • 可以获取数组在内存中的首地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int arr[] = {0,1,2,3,4};
cout<<sizeof(arr)<<endl; //整个数组占用的存储空间
cout<<sizeof(arr[0])<<endl; //int为4个字节
cout<<arr<<endl; //打印首地址,默认为16进制
cout<<(int) arr<<endl;//转换为10进制
cout<<&arr[0]<<endl;//第一个元素的地址,注意有 &
cout<<(int)&arr[0]<<endl;//转换为10进制
cout<<(int)&arr[1]<<endl;//与第一个差4个字节
return 0;
}

数组名是常量,不能赋值

二维数组定义方式

  • 数据类型 数组名[行数] [列数];
  • 数据类型 数组名[行数] [列数] = {{数据1,数据2},{数据3,数据4}};
  • 数据类型 数组名[行数] [列数] = {数据1,数据2,数据3,数据4};
  • 数据类型 数组名[] [列数] = {数据1,数据2,数据3,数据4};

建议使用第二种, “=”可有可无

第一种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
using namespace std;
int main()
{
int arr[2][3];//二行三列数组
arr[0][0]=1;
arr[0][1]=2;
arr[0][2]=3;
arr[1][0]=4;
arr[1][1]=5;
arr[1][2]=6;
cout<<arr[0][0];
cout<<arr[0][1];
cout<<arr[0][2];
cout<<arr[1][0];
cout<<arr[1][1];
cout<<arr[1][2];
cout<<endl;
int i,j; //也可以这样输出,外层打印行,内层打印列
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
cout<<arr[i][j];
}
cout<<endl;
}


return 0;
}

第二种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
using namespace std;
int main()
{
int arr[2][3]
{
{1,2,3},
{4,5,6}
};// 该处;不要忘记
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
cout<<arr[i][j];
}
}


return 0;
}

第三种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int main()
{
int arr[2][3]={1,2,3,4,5,6};

int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
cout<<arr[i][j];
}
cout<<endl;
}


return 0;
}

第四种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
using namespace std;
int main()
{
int arr[][3]{1,2,3,4,5,6};//行可以省去,列不可以省去

int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
cout<<arr[i][j];
}
cout<<endl;
}


return 0;
}

二维数组数组名

用途

  • 查看二维数组所占内存空间

  • 获取二维数组首位置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include<iostream>
    using namespace std;
    int main()
    {
    int arr[2][3]
    {
    {1,2,3},
    {4,5,6}
    };
    cout<<sizeof(arr)<<endl;//整个数组所占外存,单位是字节
    cout<<sizeof(arr[0])<<endl;//一行所占存储空间
    cout<<sizeof(arr[0][0])<<endl;//某个元素所占存储空间
    cout<<sizeof(arr)/sizeof(arr[0])<<endl;//二维数组行数
    cout<<sizeof(arr[0])/sizeof(arr[0][0])<<endl;//二维数组列数
    cout<<arr<<endl;//二维数组首地址
    cout<<(int) arr<<endl;
    cout<<(int) arr[0]<<endl;//第一行首地址
    cout<<(int) &arr[0][0]<<endl;//第一个元素的首地址,注意别丢了&
    cout<<(int) arr[1]<<endl;//第二行首地址

    return 0;
    }