最近面试时问到我这个问题,基本上是写一个函数来结合释放和赋值为null的功能。我的回答如下:
void main()
{
int *ptr;
ptr = new int;
ptr = newdelete(ptr);
}
(int*) newdelete (int *ptr)
{
delete(ptr);
return NULL;
}
执行后,main
中的局部变量 ptr
将保持空值,因为我从 newdelete
函数中返回了它。如果我只是在 newdelete 函数中赋值为 NULL
,那么 newdelete
局部变量的 ptr
将被设置为空值而不是 main
的局部变量 ptr
。我认为我的解决方案是正确的,面试官也接受了。然而,他期望得到另一个答案。他坚持说我不能从函数中返回
NULL
,但仍然要实现所需的结果。有没有办法实现这个要求?我能想到的是传递另一个参数,即指向
main
的 ptr
指针的指针,但我不明白为什么这比我做的更好!
int main()
。始终如此,没有例外。 - sbi