数组语法 :
type arrayName[size];
数组示例 : 数组元素类型是 int , 数组名称是 array , 数组元素个数为 5 ;
int array[5];
声明数组时 , 还可以进行初始化操作 ;
// 声明一个包含5个整数的数组 , 并进行初始化操作
int array[5] = {1, 2, 3, 4, 5};
上述数组 int array[5];
中 :
数组首元素地址 array
, 与 数组地址 &array
是不同的 ,
array + 1
的 步长是 4 字节 , 也就是 数组元素 的大小 ;
&array + 1
的 步长是 20 字节 , 也就是 整个数组 的大小 , 数组中有 5 个 int 类型的元素 20 字节 ;
定义数组类型语法 :
typedef type (arrayType)[size];
定义数组类型示例 : 下面是定义了 有 5 个 int 类型的数组类型 , 数组类型名称为 int5ArrType ;
typedef int int5ArrType[5];
使用定义的数组类型 , 声明并初始化一个数组变量 :
int5ArrType myArray = { 1, 2, 3, 4, 5 };
代码示例 :
#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 请按任意键继续. . .
定义指针数组类型语法 :
typedef type (*pArrayType)[size];
定义指针数组类型示例 : 下面是定义了 指针数组类型 , 指向 有 5 个 int 类型的数组 , 数组类型名称为 pInt5ArrType;
// 定义指针数组类型 , 这是一个指向数组的指针
// 指向的数组类型是 int[5] 类型
typedef int (*pInt5ArrType)[5];
使用定义的指针数组类型 , 声明并初始化一个指针数组变量 :
int5ArrType myArray = { 1, 2, 3, 4, 5 };
// 注意 : 将 数组地址 &myArray 赋值给 指针数组类型
// 不要把 数组首元素地址 myArray 赋值给 该变量 , 否则会出错
pInt5ArrType myP = &myArray;
直接定义指针数组类型变量语法 :
type (*p)[size];
直接定义指针数组类型变量示例 : 下面定义了变量 p , 该变量是一个指针类型的变量 , 指向 int[5] 类型数组的指针 ;
// int(*)[5] 是 指向 int[5] 类型数组的指针
// 这里不使用 typedef 定义的 指针数组类型 , 直接定义指针数组类型的变量
// 该操作等同于 pInt5ArrType myP = &myArray;
int(*p)[5] = &myArray;
代码示例 :
#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;
}
执行结果 :