1、指针数组与数组指针的区别?
1)指针数组:每个元素为一个指针
//指针数组
int* p_int_array[10];
2)数组指针:指向数组的指针
//数组指针
int(*int_array_p)[10];
【说明】:() > [] > * ,根据这个规则,看第一优先的符号,比如指针数组,最大的是[],所以是数组; 数组指针,最大的是(),所以是指针。
2、什么情况下需要delete?
有new才会有delete,不是定义一个指针就需要delete!!!所以上面的申明不需要删除。
【eg】:
//指针数组
int* p_int_array[10];
//new
for (unsigned int i = 0; i < 10; ++i)
{
p_int_array[i] = new int;
}
//delete
for (unsigned int i = 0; i < 10; ++i)
{
if (nullptr != p_int_array[i])
{
delete p_int_array[i];
p_int_array[i] = nullptr;
}
}
//单个元素new以及delete
int* p_int_s = new int;
if (nullptr != p_int_s)
{
delete p_int_s;
p_int_s = nullptr;
}
//多个元素new以及delete
int* p_int_m = new int[10];
if (nullptr != p_int_m)
{
delete[] p_int_m;
p_int_m = nullptr;
}