如何返回局部数组?

            稍微有些编程经验的朋友都会知道一个函数是无法返回一个局部数组的,至于原因,我想从两个方面进行说明,虽然并不是这两个方面都对其有影响,但我认为在这个问题上我们都该了解的东西:

① 函数的返回类型不能为一个数组类型。

这个就是说,作为函数返回类型的不能为一个数组,我们要想返回一系列的值,只能用一个指针来代替了,返回指向这一系列值的第一个元素的指针。

② 局部数组,具有局部作用域,当函数调用结束之后,数组也就被操作系统销毁了,即回收了他的内存空间,它里面的东西随时都有可能被覆盖。虽然此时我们获得了指向这一块内存的指针,但此刻里面的东西很大可能都不是我们想要的了。

我们又该怎么解决这个问题呢?

1: 返回一个静态的数组

即我们在定义数组的时候吧数组定义成为静态的。

如:

char *fun()

{

      static char a[] = "hello,world";

      return a;

}

2: 动态分配内存

如:

char *fun()

{

     char *a = (char*)malloc(sizeof(char)*100);

     a = "hello,world";

     return a;

}

3: 使用全局数组

全局数组具有全局的作用域。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值