- 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声明在堆空间。
|
|