1. 指针数组(二级数组)
(1) 数据为指针
int n = 36;
int n2 = 641;
int n3 = 15;
// 指针数组
int *a[3] = {&n, &n2, &n3};
// 下标法
for (int i = 0; i < 3; ++i) {
// 第一个元素是指针,需要 * 解析地址
printf("--------------------------%d \n", *a[i]);
}
printf("-------------------------------------------\n");
int **c = a;
// 指针法
for (int i = 0; i < 3; ++i) {
// c + i 获取数组第几个元素,一个 * 解析指针数组地址,一个 * 解析元素中的地址
printf("--------------------------%d \n", *(*(c + i)));
printf("--------------------------%d \n", **(c + i));
}
printf("-------------------------------------------\n");
// 地址法
for (int i = 0; i < 3; ++i) {
// a + i 获取数组第几个元素,一个 * 解析指针数组地址,一个 * 解析元素中的地址
printf("--------------------------%d \n", *(*(a + i)));
}
(1) 数据为值
// 指针数组
int *a[3] = {10, 20, 30};
// 下标法
for (int i = 0; i < 3; ++i) {
printf("--------------------------%d \n", a[i]);
}
printf("-------------------------------------------\n");
int **c = a;
// 指针法
for (int i = 0; i < 3; ++i) {
// c + i 获取第几个元素, * 解析指针数组
printf("--------------------------%d \n", *(c + i));
}
printf("-------------------------------------------\n");
// 地址法
for (int i = 0; i < 3; ++i) {
// a + i 获取第几个元素, * 解析指针数组
printf("--------------------------%d \n", *(a + i));
}
2. 数组(一级数组)
// 数组指针
int a[3] = {10, 20, 30};
// 下标法
for (int i = 0; i < 3; ++i) {
printf("--------------------------%d \n", a[i]);
}
printf("-------------------------------------------\n");
int *c = a;
// 指针法
for (int i = 0; i < 3; ++i) {
// c + i 获取第几个元素, * 解析指针数组
printf("--------------------------%d \n", *(c + i));
}
printf("-------------------------------------------\n");
// 地址法
for (int i = 0; i < 3; ++i) {
// a + i 获取第几个元素, * 解析指针数组
printf("--------------------------%d \n", *(a + i));
}
2. 数组指针(一级数组)
int n = 36;
int n2 = 641;
int n3 = 15;
int arr[3] = {n, n2, n3};
// 数组指针
int (*a)[3] = &arr;
// int (*a)[3] = {181, 86, 51};
// 下标法
for (int i = 0; i < 3; ++i) {
// +1 是整个数组的长度 就是 3 * 4
printf("--------------------------%d\n", (*a)[i]);
}
printf("-------------------------------------------\n");
int *c = a;
// 指针法
for (int i = 0; i < 3; ++i) {
// c + i 获取第几个元素, * 解析指针数组
printf("--------------------------%d \n", *(c + i));
}
printf("-------------------------------------------\n");
// 地址法
for (int i = 0; i < 3; ++i) {
// a + i 获取第几个元素, * 解析指针数组
printf("--------------------------%d \n", *((*a) + i));
}