【C++】函数指针 ② ( 数组类型基本语法 | 数组语法 | 数组首元素地址 和 数组地址 | 定义数组类型 | 定义指针数组类型语法 | 直接定义指针数组类型变量语法 )
  K1I6GvxBEuyy 2023年12月07日 24 0



文章目录

  • 一、数组概念
  • 1、数组语法
  • 2、数组首元素地址 和 数组地址
  • 二、定义数组类型
  • 1、定义数组类型语法
  • 2、代码示例 - 定义数组类型
  • 三、指针数组类型
  • 1、定义指针数组类型语法
  • 2、直接定义指针数组类型变量语法
  • 3、代码示例 - 定义指针数组类型








一、数组概念



1、数组语法



数组语法 :

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


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

int array[5];

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

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



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



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

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

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

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





二、定义数组类型




1、定义数组类型语法



定义数组类型语法 :

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


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

typedef int int5ArrType[5];

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

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



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



代码示例 :

#include "iostream"
using namespace std;

#include <stdio.h>  

// 定义数组类型 , 该数组有 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;
}

执行结果 :

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

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






三、指针数组类型




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



定义指针数组类型语法 :

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


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

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

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

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

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



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



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

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


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

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



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



代码示例 :

#include "iostream"
using namespace std;

#include <stdio.h>  

// 定义数组类型 , 该数组有 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;
}

执行结果 :

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


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月07日 0

暂无评论

推荐阅读
K1I6GvxBEuyy
作者其他文章 更多