现象

int *test_fun2()
{int array[10] = { 0 };int i = 0;for (i = 0; i < 10; i++){array[i] = 8;}return array;
}void main(void)
{int *arr = NULL;arr = test_fun2();int i = 0;for (i = 0; i < 10; i++){printf("arr = %d\n", arr[i]);}
}

输出如下:

另添加附加测试

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

输出如下:

原因:函数返回指向栈的内存,内容被释放。

原因

因为C语言数组与指针的暧昧关系,编译器也很难区分它们,所以我们不可能为C语言数组赋值。而且由于“赋值”操作也属于C语言的基本操作,为了贴合硬件,要求其必须在几个处理器周期完成,所以单个的“赋值”运算符 = 基本上不可能扩展到需要几千乃至几万个机器周期,以对成千上万个数组元素赋值。

解决

使用结构体包含数组的方式
原因:C语言中的结构体是可以包含多个字节信息的。

struct s
{ char arr[10];
};
struct s test_fun3()
{struct s ret;ret.arr[0] = 11;ret.arr[1] = 22;ret.arr[2] = 33;return ret;
}void main(void)
{struct s s1;s1 = test_fun3();printf("s1=%d, s2=%d, s3=%d\n", s1.arr[0], s1.arr[1], s1.arr[2]);
}

输出如下:

关于C语言函数返回数组问题相关推荐

  1. 关于C语言函数返回数组的问题【转】

    (转自:https://blog.csdn.net/earbao/article/details/53401800) 关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实 ...

  2. c语言在函数中返回数组,关于C语言函数返回数组的问题

    关于C语言函数返回一个数组 c语言中函数不能直接返回一个数组,但是可以用其他方式实现类似功能,不过需要注意: 1.该数组不能是返回函数的局部变量数组,因为局部变量数组在退出函数后会被释放. 可以是全局 ...

  3. c 语言 函数返回数组_如何在C ++函数中返回数组

    c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...

  4. C语言 函数返回数组和指针区别

    1.示例代码 #include <stdio.h>char * str1() {char A[] = "Hello!";return A; } char * str2( ...

  5. c语言函数返回值存放数组,C语言函数返回数组

    C编程语言不允许返回整个数组作为函数的参数.但是,您也可以返回一个指针,没有索引到一个数组中指定数组的名称.你将学习在下一章节中,这样你就可以跳过这一章,直到你理解这个概念在C中的指针的指针 如果你想 ...

  6. c语言函数返回数组_C语言如何用一维数组拷贝函数,拷贝二位数组(C Primer Plus 10-7)...

    程序内容: 初始化一个double类型的二维数组,使用编程练习2中的一个拷贝函数把该数组中的数据拷贝至另一个二维数组. 程序为C Primer Plus第十章第七题的答案示例 附:程序代码为本人亲自编 ...

  7. matlab二重指针,VC++中函数返回数组指针或者带指针的结构体的编译方式是否可取? - 程序语言 - 小木虫 - 学术 科研 互动社区...

    libralibra 构造函数+析构函数应该是比较正规的做法吧, 你的结构体/类被提早释放的问题,是不是那个结构体是局部变量,当超出作用域时对象被销毁,如果存在析构函数,会被默认调用, 如果你返回结构 ...

  8. c语言函数输出数组,如何让C语言函数返回一个二维数组

    为了让C语言函数返回一个二维数组,有些人这样定义函数: int **foo(int rows, int columns) 然后在函数中费劲心机拼出来一个这样的malloc语句: int (*resul ...

  9. c语言中自定义函数返回数组,C语言自定义函数返回数组的方法(图文详解)

    C语言自定义函数返回数组的方法(图文详解) 最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢? 能否直接在自定义 函数中,写成char *类型返回值,直接返回呢?,代码如下: 直接返回str ...

最新文章

  1. java培训机构如何选择适合自己的
  2. 数据结构 互换二叉树中所有结点的左右子树 C
  3. 设置eclipse自动生成的author等注释
  4. 操作系统--用户级线程和内核级线程
  5. Python计算从n个元素中任选i个的组合数C(n,i)
  6. ucos-II之就绪表解读
  7. 如何创建和使用文档库 - [MOSS 2007应用日记]
  8. 实训代码分享java毕业设计_物流配送管理系统
  9. 何为监督学习、无监督学习、强化学习、弱监督学习、半监督学习、多示例学习?
  10. Android Studio 报错 Error:Some file crunching failed, see logs for details
  11. 1月英语总结—发现新大陆
  12. adrunio蜂鸣器音乐(天空之城)c调
  13. 3.图灵学院-----阿里/京东/滴滴/美团整理----高频JVM调优篇
  14. 2020快手前端暑期实习面经
  15. WordArt与everything联用生成含中文的词云
  16. 文献 | 如何快速将英文文献翻译为中文?
  17. word、wps中使用vba删除所有表格指定列
  18. 二分答案——路标设置(洛谷 P3853)
  19. Python基础入门(2):简单函数(input,eval,print)与循环结构
  20. matlab打开.mat文件

热门文章

  1. 如果你家孩子正处在4-12岁,请用心培养这一点,将来不吃亏!
  2. 轻量化实时语义分割LiteSeg——从算法原理到模型训练与部署
  3. 新加坡国立大学Luu Anh Tuan老师组招收全奖博士生
  4. 如何PHP给人生日祝福,给自己的生日祝福说说 幽默的祝别人生日快乐
  5. Git命令 分支 Tag 配置 SVN迁移
  6. css3禅密花园叫什么名字_CSS秘密花园: Sticky footers
  7. 生信分析,通过ensemblID检索对应protein序列
  8. 公司邮箱如何注册企业邮箱哪家安全?外贸公司邮箱哪个好?
  9. java 改变窗口颜色_java swing 设置窗口背景颜色
  10. [转]连连看核心算法详解