前言
C++当中指针是一个比较玄乎的东西,一段时间不用就弄不清楚了,昨天做笔试题目的时候就吧指针数组和数组指针搞混了。所以说,好记性不如烂笔头,重要的东西还是应该梳理一下整理下来,便于以后回顾。
>指针数组
——–
指针数组: array of pointers,翻译成英文就比较好理解,其本质是一个数组,用于存储指针。
int *p[4]: 由于
[]
的优先级较高,所以p
先和[]
结合,表示这是一个数组,再由int*
说明这是一个整形指针数组,数组的容量为4。数组指针
——–
数组指针: a pointer of an array,其本质是一个指针,指向一个数组。
int (*p)[4]: 由于
()
的优先级更高,所以p
先和*
结合表示p
是一个指针,指向一个int
数组,其容量大小为4.几个例子
———
|
输出内容0018FA140018FA180018FA1C0018FA20
|
输出内容:5 6 7 8 4 4
注意
注意和上例中的区别,int(*d)[4] = c; 这里不可以加&, 即&(c[0]) = c,这里c的含义应该为指向一个“一维数组的指针”,等同于上例中&int_array(指向一个以为数组的指针)。
|
输出内容:4 4
sizeof(a)/sizeof(a[0]) 得到的是数组的长度,即4;
sizeof(b) 得到的是一个指针的大小,在32位系统下是4(byte)
总结
最后总结两句话:
- 优先级
()>[]>*
- 定义了指针一定要知道指针指向哪里,不然要悲剧。