指针和数组的区别,大致有以下几点:
1、从空间分配来说:数组是静态分配,指针是动态分配。
2、从访问效率来说:数组是直接访问,指针是间接访问,数组效率要高一点。
3、从安全性来说:数组容易造成越界,而指针会出现野指针造成的内存泄漏。相比之下数组更为安全一点。
4、从函数形参来说:越界传指针用指针的指针,传两位及以上数组用的是数组指针。
5、从处理对象来说:指针偏向于计算机地址的处理,而数组偏向于值的处理。
6、从空间连续性来说:指针分配空间不一定是连续的,而数组对一个的空间一定是里连续的。
从上面列举的区别看来,数组似乎比指针优点更多一点,既然功能相似,数组又似乎略胜一筹,可是为什么还是会用到指针呢?
指针也是有优点的,而且C语言的特点就是体现在指针上:
1、指针可以直接对硬件进行操作访问,
2、数组的静态分配是比较占内存的,动态分配更为灵活,解决了空间分配利用率的问题。
3、指针访问更为灵活,相较于数组,但是由于它过于灵活,往往不注意就会造成内存泄漏。