一、数组概念
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("数组元素的和为:%dn", 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("数组元素的和为:%dn", sum);
// 注意 : 将 数组地址 &myArray 赋值给 指针数组类型
// 不要把 数组首元素地址 myArray 赋值给 该变量 , 否则会出错
pInt5ArrType myP = &myArray;
// int(*)[5] 是 指向 int[5] 类型数组的指针
// 这里不使用 typedef 定义的 指针数组类型 , 直接定义指针数组类型的变量
// 该操作等同于 pInt5ArrType myP = &myArray;
int(*p)[5] = &myArray;
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
}
执行结果 :