• 【C++】函数指针 ② ( 数组类型基本语法 | 数组语法 | 数组首元素地址 和 数组地址 | 定义数组类型 | 定义指针数组类型语法 | 直接定义指针数组类型变量语法 )







    一、数组概念



    1、数组语法


    数组语法 :

    type arrayName[size];
    
    • 1
    • type 是 数组元素类型 ;
    • arrayName 是 数组名称 ;
    • size 是 数组中元素个数 ;

    数组示例 : 数组元素类型是 int , 数组名称是 array , 数组元素个数为 5 ;

     int array[5];
    
    • 1

    声明数组时 , 还可以进行初始化操作 ;

    // 声明一个包含5个整数的数组 , 并进行初始化操作
    int array[5] = {1, 2, 3, 4, 5}; 
    
    • 1
    • 2

    2、数组首元素地址 和 数组地址


    上述数组 int array[5]; 中 :

    • array 是 数组 首元素 的 地址 ;
    • &array 是 整个数组 的地址 ;

    数组首元素地址 array , 与 数组地址 &array 是不同的 ,

    • array + 1步长是 4 字节 , 也就是 数组元素 的大小 ;

    • &array + 1步长是 20 字节 , 也就是 整个数组 的大小 , 数组中有 5 个 int 类型的元素 20 字节 ;





    二、定义数组类型




    1、定义数组类型语法


    定义数组类型语法 :

    typedef type (arrayType)[size];
    
    • 1
    • typedef 是 重命名关键字 , 这里是将数组类型重命名为 arrayType 数组类型名称 ;
    • type 是 数组元素类型 ;
    • arrayType 是 定义的数组类型名称 ;
    • size 是 数组大小 ;

    定义数组类型示例 : 下面是定义了 有 5 个 int 类型的数组类型 , 数组类型名称为 int5ArrType ;

    typedef int int5ArrType[5];  
    
    • 1

    使用定义的数组类型 , 声明并初始化一个数组变量 :

    int5ArrType myArray = { 1, 2, 3, 4, 5 };
    
    • 1

    2、代码示例 - 定义数组类型


    代码示例 :

    #include "iostream"
    using namespace std;
    
    #include   
    
    // 定义数组类型 , 该数组有 5 个 int 类型元素
    typedef int int5ArrType[5];
    
    int main() {
    
        int5ArrType myArray = { 1, 2, 3, 4, 5 };
    
        // 计算数组元素累加结果
        int sum = 0;
    
        for (int i = 0; i < 5; i++) {
            sum += myArray[i]; // 计算数组元素的和  
        }
    
        printf("数组元素的和为:%d\n", sum);
    	
    	// 控制台暂停 , 按任意键继续向后执行
    	system("pause");
    
    	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

    执行结果 :

    数组元素的和为:15
    请按任意键继续. . .

    在这里插入图片描述





    三、指针数组类型




    1、定义指针数组类型语法


    定义指针数组类型语法 :

    typedef type (*pArrayType)[size];
    
    • 1
    • typedef 是 重命名关键字 , 这里是将数组类型重命名为 arrayType 数组类型名称 ;
    • type 是 数组元素类型 ;
    • * 表示 该定义的类型是 指针类型 , 该指针指向一个 type[size] 数组类型 的 数组 ;
    • pArrayType 是 定义的指针数组类型名称 ;
    • size 是 数组大小 ;

    定义指针数组类型示例 : 下面是定义了 指针数组类型 , 指向 有 5 个 int 类型的数组 , 数组类型名称为 pInt5ArrType;

    // 定义指针数组类型 , 这是一个指向数组的指针 
    // 指向的数组类型是 int[5] 类型
    typedef int (*pInt5ArrType)[5];
    
    • 1
    • 2
    • 3

    使用定义的指针数组类型 , 声明并初始化一个指针数组变量 :

    int5ArrType myArray = { 1, 2, 3, 4, 5 };
    
    // 注意 : 将 数组地址 &myArray 赋值给 指针数组类型
    // 不要把 数组首元素地址 myArray 赋值给 该变量 , 否则会出错
    pInt5ArrType myP = &myArray;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、直接定义指针数组类型变量语法


    直接定义指针数组类型变量语法 :

    type (*p)[size];
    
    • 1
    • type 是 数组元素类型 ;
    • * 表示 该定义的类型是 指针类型 , 该指针指向一个 type[size] 数组类型 的 数组 ;
    • p 是 定义的指针数组类型变量名称 ;
    • size 是 数组大小 ;

    直接定义指针数组类型变量示例 : 下面定义了变量 p , 该变量是一个指针类型的变量 , 指向 int[5] 类型数组的指针 ;

        // int(*)[5] 是 指向 int[5] 类型数组的指针 
        // 这里不使用 typedef 定义的 指针数组类型 , 直接定义指针数组类型的变量
        // 该操作等同于 pInt5ArrType myP = &myArray;
        int(*p)[5] = &myArray;
    
    • 1
    • 2
    • 3
    • 4

    3、代码示例 - 定义指针数组类型


    代码示例 :

    #include "iostream"
    using namespace std;
    
    #include   
    
    // 定义数组类型 , 该数组有 5 个 int 类型元素
    typedef int int5ArrType[5];
    
    // 定义指针数组类型 , 这是一个指向数组的指针 
    // 指向的数组类型是 int[5] 类型
    typedef int (*pInt5ArrType)[5];
    
    int main() {
    
        int5ArrType myArray = { 1, 2, 3, 4, 5 };
    
        // 计算数组元素累加结果
        int sum = 0;
    
        for (int i = 0; i < 5; i++) {
            sum += myArray[i]; // 计算数组元素的和  
        }
    
        printf("数组元素的和为:%d\n", sum);
    
    
        // 注意 : 将 数组地址 &myArray 赋值给 指针数组类型
        // 不要把 数组首元素地址 myArray 赋值给 该变量 , 否则会出错
        pInt5ArrType myP = &myArray;
    
        // int(*)[5] 是 指向 int[5] 类型数组的指针 
        // 这里不使用 typedef 定义的 指针数组类型 , 直接定义指针数组类型的变量
        // 该操作等同于 pInt5ArrType myP = &myArray;
        int(*p)[5] = &myArray;
    	
    	// 控制台暂停 , 按任意键继续向后执行
    	system("pause");
    
    	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

    执行结果 :

    在这里插入图片描述

  • 相关阅读:
    Matlab:特征值
    【人工智能】机器学习中的决策树
    CSP2023总结
    操作系统银行家算法
    移动WEB开发之流式布局--移动WEB开发之flex布局--携程网首页案例制作
    .NET NativeAOT 指南
    数据可视化大屏人员停留系统的开发实录(默认加载条件筛选、单击加载、自动刷新加载、异步加载数据)
    图论(四)—最短路问题(Dijkstra)
    把前端HTML+CSS+JavaScript脚本嵌入WP的页面中
    C语言之字符函数总结(全部!),一篇记住所有的字符函数
  • 原文地址:https://blog.csdn.net/han1202012/article/details/134358963