指针数组类型解析:
#include <stdio.h>
//指针数组 是一个存放指针的数组
/*
int arr[10] = { 0 };//整型数组
char ch[5] = { 0 };//字符数组
int * parr[4];//存放整型指针的数组 简称指针数组
char* pch[5];//存放字符指针的数组 指针数组
*/
int main()
{
int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 2,3,4,5,6 };
int arr3[] = { 3,4,5,6,7 };
int* parr[] = { arr1,arr2,arr3 };
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 5; j++)
{
printf("%d ", * (parr[i] + j));
//parr[0]==arr1 arr1数组首元素地址 *解引用得到数组元素
}
printf("\n");
}
}
数组指针类型解析:
int main()
{
//int* p = NULL;
//char* pc = NULL;
//数组指针 指向数组的指针 存放数组的的地址
//int arr[10] = { 0 };
//arr 首元素地址
//&arr[0] 首元素地址
//&arr数组的地址
//[]优先级优于*
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int(*p)[10] = &arr; //&arr:数组地址 用数组指针存放
//p就是数组指针 指向大小为10个int型的数组
char* arr1[5];//arr1:存放字符指针的数组
char* (*pa)[5] = &arr1; //arr1是数组 数组地址存放在数组指针
//pa指向大小为5个char*类型的数组
return 0;
}
通过调试可以看到&arr和p的类型是相同的 是数组指针类型的