指针数组与数组指针
在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针的表达也十分多样。同理,指针数组就是存放指针的数组,其本质为数组。由于[ ]的优先级高于*的优先级,指针数组与数组指针的表达可做如下表示:
由于指向数组的指针与指向普通整型变量的指针不同,在这里可以再对数组名与&数组名的关系进行理解
在一维数组中,数组名表示指向首元素的首地址,是一个指向普通变量的指针常量,当对其+1时偏移量是一个普通数据类型的内存大小。而在数组名前加上取地址符&后,表示的就是一个指向数组的指针常量,对其+1时偏移量是一个数组的内存大小
int p; //这是一个普通的整型变量
int *p; //首先从P处开始,先与*结合,所以说明P是一个指针,然后再与int结合,说明指针所指向的内容的类型为int型,所以P是一个返回整型数据的指针
int p[3]; //首先从P处开始,先与[]结合,说明P是一个数组,然后与int结合,说明数组里的元素是整型的,所以P是一个由整型数据组成的数组
int *p[3]; //首先从P处开始,先与[]结合,因为其优先级比*高,所以P是一个数组,然后再与*结合,说明数组里的元素是指针类型,然后再与int结合,说明指针所指向的内容的类型是整型的,所以P是一个由返回整型数据的指针所组成的数组
int (*p)[3]; //首先从P处开始,先与*结合,说明P是一个指针,然后再与[]结合,说明指针所指向的内容是一个数组,然后再与int结合,说明数组里的元素是整型的,所以P是一个指向由整型数据组成的数组的指针