C语言区分指针数组和数组指针
一:指针数组
指针数组相对来说比较容易理解,就是一个存放指针的数组,举一个简单地例子。
int* arr[10];//整型指针的数组
char* brr[10];//字符指针的数组
char** crr[10];//二级字符指针的数组
二:数组指针
(1)首先要明确一点:数组指针是指针,不是数组。
顾名思义,数组指针就是能够指向数组的指针,举例来说明:
int* parr1[10];
int(*parr2)[10];
//
这两句代码是区分数组指针和指针数组的典型,第一句代码可以明确知道是指针数组,就是一个存放指针的数组;第二句代码,parr2先是和“星”结合,说明parr2是一个指针变量,然后指向的是一个大小为10个整型的数组,所以parr2是一个指针,指向一个数组,为数组指针。
(2)为什么要加括号?
因为[ ]的优先级是高于“星”的,所以必须加上()来保证parr2先和*结合。
三:思考
int(*parr3[10])[5];//parr3是一个存储数组指针的数组,该数组能够存放10个数组指针,
//每个数组指针能够指向一个数组,数组5个元素,每个元素int 类型。