【发布时间】:2014-09-22 01:46:27
【问题描述】:
我试图将数组地址从函数传递给完美发生的主函数。但是当我取消引用 main() 中的地址时,我得到了垃圾值。我猜 array_address 内存中的变量只存在于函数的范围内。如果是这种情况,如何将一个函数中生成的数组返回给另一个函数?
这是我的代码:
int* letssee(int something)
{
int* array_address;
int a[10], i=0;
array_address = &a[0];
for (i; i<something;i++)
{
*(array_address+i) = i;
printf("\n%p, %d",(array_address+i), *(array_address+i));
}
return array_address;
}
int main()
{
int i= 5,j;
int* catch_address;
catch_address = letssee(i);
printf("\n");
for (j= 0; j<i; j++)
{
printf("%p, %d\n", (catch_address+j),*(catch_address+j));
}
return 0;
}
【问题讨论】:
-
返回指向非静态局部变量的指针或引用会导致未定义的行为,因为该变量在函数返回后不再有效。
-
哦..所以我要做的就是制作一个静态数组?然后通过?
-
成功了:D 谢谢@CaptainObvlious
-
不,不要那样做……那是以后灾难的根源。为什么不通过 new 分配缓冲区(或从调用者传入缓冲区)