c语言自定义函数调用数组中创建的数组怎么传递回主函数

  • 标准C语言没有你所说的变元的東东。变元都是后来 C++/C# 才有的。

    指针是最方便的其它不想说了。

  • c语言就指针了吧!其他的没有指针直接了!
    引用变元都不是c的东西了!

  • 数组明本身就可以当做地址 和指针一样 所以可以直接在子函数里引用这个数组的首地址 然后用for循环遍历整个数组

  • 你用数组做形参,传过詓的实参相当于传指向数组的指针

  • 既然用c,就不要害怕用指针并且要弄明白指针

}

通过上一篇的讲解相信大家已經明白直接的return数组的问题以及原因了,今天我们将详细为大家讲解在函数中返回数组的常见办法

此类问题,应用场景往往为了解决函数間相互通信比如某个函数内处理的完的结果数据需要交接给另一个函数的情况,那么一般来说总结有以下三种:

  1. 直接使用全局变量:這种方法最方便,但此方法打破了函数间的通信及封装的思想所以不推荐使用,不在今天讨论范围之内
  2. 通过堆区动态开辟内存解决:C語言中,我们通常用malloc来在堆区动态开辟内存利用堆区“现用现开辟,用完手动收回”特点实现灵活管理。是实际开发中的常用办法吔是我们今天的主要内容。
  3. 由调用方传入数组指针:此种方法不需要函数返回地址而是在调用时直接 传入数组地址,委托被调用方进行操作由于此局部变量属于调用方本身,故即便被调用方结束内存释放也不会被影响到该数组。

下面逐个实验对于第二种方法,由于動态开辟内存在堆区堆区不想上一讲中局部变量在栈区存储,系统根据它的生命周期自动收回而是手动开辟,手动释放这样就可以唍全规避问题,例子与效果见下图:

需要注意的是:记得用完free掉防止内存泄露!

第三种方法:虽然没有在函数中返回数组,但也可以解决數组通信问题主要思路就是调用方中定义数组,然后将地址传入由于该内存属于调用方,而非被调用方故被调用方在调用结束后释放掉内存也无所谓。例子程序及效果如下:

关于数组使用传递的总结大体如上,大家有任何问题和疑问还可以联系我们!


受苹果公司新規定影响微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号

你的朋友可以在“发现”-“看一看”看到你认为好看的文章。

已取消“好看”想法已同步删除

最多200字,当前共字 发送

确定 最多200字当前共字
}

我要回帖

更多关于 c语言自定义函数调用数组 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信