黑马程序员技术交流社区
标题:
指针作为函数返回值注意(面试没答上来题目)
[打印本页]
作者:
杨冬武
时间:
2016-4-3 09:48
标题:
指针作为函数返回值注意(面试没答上来题目)
int * test (int x,int y)
{
int a[2] = {y,x};
return a;
}
复制代码
题目:
问可不可以这样写来交换两个数的值?
当时想交换两个数的值,就想到了三种方法,
1.临时变量。
2.数学相加相减。
3.按位亦或方法。
一下把考点弄错了,
这道题问的应该是指针作为函数的返回值问题,答案如下:
首先数组名是数组的地址,返回一个地址,
而这个地址是局部变量数组a的地址,
a存储在栈区,当函数结束后,
a就被回收了,这时再返回a的地址就有问题了。
怎么破:
解决这一问题的关键就是确保函数结束后,
数组a没有被回收。
我知道两种方法解决:
1.将a定义为全局变量。
2.将a声明在堆空间。
作者:
堕落天使
时间:
2016-4-4 07:59
学习了,多谢分享!
作者:
缘之有缘
时间:
2016-4-4 15:39
多谢分享,
作者:
muzipiao
时间:
2016-4-4 16:59
的确是个需要注意的点
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2