• C++基础——数组


    1 概述

    数组是一个集合,用于存储相同类型的数据。数组是一个不可变集合,长度定义后不可改变。
    从内存上来说,数组是连续分配的一块内存

    2 一维数组

    可以通过三种方式定义一维数组

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

    示例:

    #include 
    using namespace std;
    
    int main() {
        //定义方式1
        //数据类型 数组名[元素个数];
        int arr1[3];
    
        //利用下标赋值
        arr1[1] = 99;
    
        //利用下标输出
        cout << arr1[1] << endl;
    
        //第二种定义方式
        //数据类型 数组名[元素个数] =  {值1,值2 ,值3 ...};
        //如果{}内不足10个数据,剩余数据用0补全
        int arr2[10] = { 100, 90,80};
    
        //逐个输出
        cout << arr2[0] << endl;
        cout << arr2[1] << endl;
    
        //一个一个输出太麻烦,因此可以利用循环进行输出
        for (int i = 0; i < 10; i++)
        {
            cout << arr2[i] << endl;
        }
    
        //定义方式3
        //数据类型 数组名[] =  {值1,值2 ,值3 ...};
        int arr3[] = { 100,90,80,70,60,50,40,30,20,10 };
    
        for (int i = 0; i < 10; i++)
        {
            cout << arr3[i] << 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
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    一维数组的数组名有以下两种用途:

    1. 可以通过数组名来统计数组在内存中的长度
    2. 可以获取数组在内存中的首地址

    示例:

    #include 
    using namespace std;
    
    int main() {
    	//数组名用途
    	//1、可以获取整个数组占用内存空间大小
    	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    
    	cout << "整个数组所占内存空间为: " << sizeof(arr) << endl;
    	cout << "每个元素所占内存空间为: " << sizeof(arr[0]) << endl;
    	cout << "数组的元素个数为: " << sizeof(arr) / sizeof(arr[0]) << endl;
    
    	//2、可以通过数组名获取到数组首地址
    	cout << "数组首地址为: " << (int)arr << endl;
    	cout << "数组中第一个元素地址为: " << (int)&arr[0] << endl;
    	cout << "数组中第二个元素地址为: " << (int)&arr[1] << endl;
    
    	//arr = 100; 错误,数组名是常量,因此不可以赋值
    
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 数组名是常量,不可以赋值
    • 直接打印数组名,可以查看数组所占内存的首地址
    • 对数组名使用sizeof,能够返回整个数组所占用的内存大小

    3 二维数组

    二维数组就是在一维数组的基础上增加一个维度
    可以有四种初始化方式

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

    示例:

    #include 
    using namespace std;
    
    int main() {
    	//方式1  
    	//数组类型 数组名 [行数][列数]
    	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;
    
    	for (int i = 0; i < 2; i++)
    	{
    		for (int j = 0; j < 3; j++)
    		{
    			cout << arr[i][j] << " ";
    		}
    		cout << endl;
    	}
    
    	//方式2 
    	//数据类型 数组名[行数][列数] = { {数据1,数据2 } ,{数据3,数据4 } };
    	int arr2[2][3] =
    	{
    		{1,2,3},
    		{4,5,6}
    	};
    
    	//方式3
    	//数据类型 数组名[行数][列数] = { 数据1,数据2 ,数据3,数据4  };
    	int arr3[2][3] = { 1,2,3,4,5,6 }; 
    
    	//方式4 
    	//数据类型 数组名[][列数] = { 数据1,数据2 ,数据3,数据4  };
    	int arr4[][3] = { 1,2,3,4,5,6 };
    
    	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
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    二维数组的数组名作用与一维数组相同,表示二维数组所占用的内存空间,也表示二维数组所在内存的首地址。

    #include 
    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 << "二维数组第一行地址:" << arr[0] << endl;
    	cout << "二维数组第二行地址:" << arr[1] << endl;
    
    	cout << "二维数组第一个元素地址:" << &arr[0][0] << endl;
    	cout << "二维数组第二个元素地址:" << &arr[0][1] << 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
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
  • 相关阅读:
    Golang 接口 interface
    VsCode连接远程服务器并修改文件代码
    vulnhub Photographer: 1
    supervisorctl(-jar)启动配置设置NACOS不同命名空间
    如何使用Python和PaddleOCR轻松识别图片中的文字
    【DPDK】谈谈DPDK如何实现bypass内核的原理 其一 PCI设备与UIO驱动
    【日常记录】CTF审查清单(windows)
    SpringCloud微服务实战——搭建企业级开发框架(四十八):【移动开发】整合uni-app搭建移动端快速开发框架-使用第三方UI框架
    【Proteus仿真】【Arduino单片机】多功能数字时钟设计
    BUUCTF zip伪加密 1
  • 原文地址:https://blog.csdn.net/weixin_49274713/article/details/133779345