int *ptr[3];
由于 C++ 运算符的优先级中, * 小于 [],所以 ptr 先和 [] 结合成为数组,然后再和 int * 结合形成数组的元素类型是 int * 类型,得到一个数组的元素是指针,简称指针数组。
指针数组:是一个数组。存放指针的数组。数组中存放的都是某一类型的指针。
int *(ptr[3]);
这个和上面的一样,优先级顺序是 * 小于 (),() 等于 []。 ptr 先和 [] 结合成为数组,然后再和 int * 结合形成数组的元素类型是 int * 类型,得到一个叫一个数组的元素是指针。
int (*ptr)[3];
这个就不一样了,优先级顺序是 * 小于 (), () 等于 [], () 和 [] 的优先级一样,但是结合顺序是从左到右,所以先是 () 里的 * 和 ptr 结合成为一个指针,然后是 (*ptr) 和 [] 相结合成为一个数组,最后叫一个指针 ptr 指向一个数组,简称数组指针。
数组指针:是一个指针。存放指向数组的指针。这个指针存放某一数组的起始地址,数组中存放的都是某一类型的元素。