首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-27 
C语言函数返回数组疑惑#include stdio.h#include string.h/*返回数组的函数*/int*ArrayReturn(void)i

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楼太强了 解释的太生动了

热点排行