前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】函数指针 ② ( 数组类型基本语法 | 数组语法 | 数组首元素地址 和 数组地址 | 定义数组类型 | 定义指针数组类型语法 | 直接定义指针数组类型变量语法 )

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

作者头像
韩曙亮
发布2023-11-13 09:06:33
1150
发布2023-11-13 09:06:33
举报
文章被收录于专栏:韩曙亮的移动开发专栏

一、数组概念

1、数组语法

数组语法 :

代码语言:javascript
复制
type arrayName[size];
  • type 是 数组元素类型 ;
  • arrayName 是 数组名称 ;
  • size 是 数组中元素个数 ;

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

代码语言:javascript
复制
 int array[5];

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

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

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

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

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

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

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

二、定义数组类型


1、定义数组类型语法

定义数组类型语法 :

代码语言:javascript
复制
typedef type (arrayType)[size];
  • typedef 是 重命名关键字 , 这里是将数组类型重命名为 arrayType 数组类型名称 ;
  • type 是 数组元素类型 ;
  • arrayType 是 定义的数组类型名称 ;
  • size 是 数组大小 ;

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

代码语言:javascript
复制
typedef int int5ArrType[5];  

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

代码语言:javascript
复制
int5ArrType myArray = { 1, 2, 3, 4, 5 };

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

代码示例 :

代码语言:javascript
复制
#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 请按任意键继续. . .

在这里插入图片描述
在这里插入图片描述

三、指针数组类型


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

定义指针数组类型语法 :

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

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

代码语言:javascript
复制
// 定义指针数组类型 , 这是一个指向数组的指针 
// 指向的数组类型是 int[5] 类型
typedef int (*pInt5ArrType)[5];

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

代码语言:javascript
复制
int5ArrType myArray = { 1, 2, 3, 4, 5 };

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

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

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

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

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

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

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

代码示例 :

代码语言:javascript
复制
#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;
}

执行结果 :

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数组概念
    • 1、数组语法
      • 2、数组首元素地址 和 数组地址
      • 二、定义数组类型
        • 1、定义数组类型语法
          • 2、代码示例 - 定义数组类型
          • 三、指针数组类型
            • 1、定义指针数组类型语法
              • 2、直接定义指针数组类型变量语法
                • 3、代码示例 - 定义指针数组类型
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档