1. 概念
1.1. 指针数组
int* ptrA[5];
指针数组本质上来讲是一个数组,数组的内容是指针;
1.2. 数组指针
int (*ptrB)[5];
数组指针的本质上来讲是一个指针,只是这个指针用来处理数组问题;
2. 实验
指针 + 1
代表地址偏移一个数据类型的大小;数组指针 + 1
代表地址偏移量 = 数据类型的大小 * 数组的列数;
int test[2][5]{
{1001, 1002, 1003, 1004, 1005},
{2001, 2002, 2003, 2004, 2005}
};
int* ptestA[5]; //指针数组 五个int类型的指针
int(*ptest)[5]{test}; //数组指针, 一行5列
std::cout << ptest << std::endl; // 00BBFD60
ptest = ptest + 1; //数组指针的指针 + 1 == 数据类型的大小 * 数据的列数 == 4 * 5
std::cout << ptest << std::endl; // 00BBFD74
std::cout << test[1][4] << std::endl; // 2005
std::cout << ptest[0][1] << std::endl; // 2002