数组和指针完全是不一样的两个东西,但他们可以完成相同的功能。所以我们需要区分他们,大概可以从5个方面来区分:
1 空间分配:
数组:如果是局部变量,就在栈上分配一块连续的空间,分配的空间一般要比实际使用的大。属于静态分配空间。
指针:在堆上分配空间,是动态分配空间
2 访问效率:
数组属于直接访问,所以效率较高。而指针需要先访问指针的地址,再找到它所指向的空间,属于间接访问,效率低些。
3 安全性
数组因为数组大小是定义好的,所以可能会造成数组越界的问题。而指针会可能有野指针,会造成内存泄漏的问题
4 函数形参
数组会将其转化为指针,比如整型一维数组,用整型指针接参数。整型二维数组就用整型一维数组指针接参数。
5 操作
数组偏向于对值的操作,而指针偏向于对地址的操作。