读书人

C语言函数返回数组疑惑解决思路

发布时间: 2012-04-27 11:57:44 作者: rapoo

C语言函数返回数组疑惑
#include <stdio.h>
#include <string.h>

/*返回数组的函数*/
int *ArrayReturn(void);


int main()
{
int array[20] = {0};
int i;

array = ArrayReturn();

for (i = 0; i < 20; i++)
{
printf("%d\n", array[i]);
}

getch();
}


int *ArrayReturn(void)
{
int array[20];
int *p = array;
int i;

for (i = 0; i < 20; i++)
{
array[i] = i;
}

return p;
}


编译时,红色标记行出错了。返回数组函数一直很纠结啊

[解决办法]
函数中的数组是定义的变量,函数结束的时候,这个数组会被回收。
如果需要,就用malloc,这样动态分配的空间是在堆上,只有你free掉(或者程序运行结束)的时候才会被回收。
[解决办法]
不能返回局部变量的引用,在很多书里都有提到特别是Effective C++里面。
[解决办法]
7楼太强了 解释的太生动了

读书人网 >C语言

热点推荐