C语言返回数组的两种方法

这篇具有很好参考价值的文章主要介绍了C语言返回数组的两种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在构造方法中,我们经常通过函数得到改变的或者新建的数组。但是使用return是无法成功返回的,如下:

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
double* convertTemperature(double celsius, int* returnSize){
    double ktem,htem;
    double ans[2];
    ktem=celsius+273.15;
    htem=celsius*1.80+32.00;
    ans[0]=ktem;
    ans[1]=htem;
    return ans;
}

因为数组ans为局部变量 随着函数调用的结束,其中的各种局部变量也将被系统收回,所以无法正确返回数组值,可以采用以下方法:

方法一:使用数组指针,malloc分配动态空间。

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
double* convertTemperature(double celsius, int* returnSize){
    double* ans;
    ans=(double*)malloc(sizeof(double)*2);
    ans[0]=celsius+273.15;
    ans[1]=celsius*1.80+32.00;
    *returnSize=2;
    return ans;
}

方法二:采用static关键字

int* function(){
    static int str[5]={1,2,3,4,5};
	return str;
}

当主函数中已经定义该数组可以直接返回,如:

#include<stdio.h> 

void function(int str[],int len)
{
	int i=0;
    for(i=0;i<len;i++){
        str[i]=str[i]+1;
    }
}

int main()
{
	int str[5]={1,2,3,4,5};
	int len=5;
	function(&str,len);
	for(int i=0;i<len;i++)
	{
		printf("%d",str[i]);
	}
	return 0;
}

方法一:使用数组指针,通过指针改变数组内容

void function(int *str,int len)
{
    for(int i=0;i<len;i++){
        *(str+i)=str[i]+1;
    }
}
int main()
{
	int str[5]={1,2,3,4,5};
	int len=5;
	function(str,len);
	for(int i=0;i<len;i++)
	{
		printf("%d",str[i]);
	}
	return 0;
}

方法二:使用&引用,引用数组直接带回数组值。文章来源地址https://www.toymoban.com/news/detail-615356.html

#include<stdio.h> 

void function(int(&str)[5],int len)
{
	int i=0;
    for(i=0;i<len;i++){
        str[i]=str[i]+1;
    }
}

int main()
{
	int str[5]={1,2,3,4,5};
	int len=5;
	function(str,len);
	for(int i=0;i<len;i++)
	{
		printf("%d",str[i]);
	}
	return 0;
}

到了这里,关于C语言返回数组的两种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript数组去重,大小排序的两种方法

    方法有很多种,本文列举其中两种 声明一个数组 数组去重 1:利用ES6中的 Set 方法去重(最常用) 原理: Set数据结构中所有元素都是唯一的,没有重复 Set 本身是一个构造函数,用来生成 Set 数据结构 2:利用indexOf去重 原理: indexof() 可返回某个指定的字符串值在字符串中首

    2024年02月06日
    浏览(43)
  • 【数据结构】稀疏矩阵存储的三种方法及三元组表示稀疏矩阵转置算法的两种实现 —— C++

    1. 三元组顺序表数据结构 注意:data[]中的元素是按行存储或者按列存储的,所以 在将三元组逆置时,不能简单地将行列下标对换,data[]数组中元素的顺序也需要重新排列 2. 三元组表示稀疏矩阵转置算法1 3. 三元组表示稀疏矩阵转置算法2:快速转置 为了 便于随机存取任意一

    2024年02月05日
    浏览(45)
  • 【数据结构与算法分析】使用C语言实现队列的两种(带头结点与不带头结点)链式存储,并且给出一种循环队列的设计思想

      当我们编写程序时,经常需要处理各种数据结构。队列是一种常见的数据结构,它有着广泛的应用场景。队列的基本操作包括入队和出队,应用于模拟等待队列、消息队列、计算机缓存等场合。   在实际编程中,我们可以用不同的数据结构来实现队列。本文主要介绍了

    2024年02月08日
    浏览(118)
  • 使用c语言编程时输入具体的年份和月份,求月份的天数的两种编程方法

    方法一:使用if……else语句  方法二:使用switch语句 考虑到一些读者需要相关资料和解决一些疑问,因此我新建立了一个学习交流群,我在群文件里上传了一些资料,需要的读者可以入群下载。 群中文件资料我会时常更新,主要资料是51单片机开发、32单片机开发、编程、嵌

    2024年02月11日
    浏览(64)
  • No Spring环境Mybatis-Plus批量插入并返回主键的两种方式

    批量插入,可以把Mybatis-Plus看作是Mybatis加强版;故Mybatis中的相关操作都可以在Mybatis-Plus中使用;在mysql数据库中支持批量插入,所以只要配置useGeneratedKeys和keyProperty就可以批量插入并返回主键了。 下面是批量插入的Dao层接口    一注解方式:      直接撸代码:      第二种: XML方

    2024年02月09日
    浏览(34)
  • 【数据结构】归并排序的两种实现方式与计数排序

    前言:在前面我们讲了各种常见的排序,今天我们就来对排序部分收个尾,再来对归并排序通过递归和非递归的方法进行实现,与对计数排序进行简单的学习。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:数据结构 👈 💯代码仓库:卫卫周大胖的学习日记💫 💪关注博

    2024年01月18日
    浏览(49)
  • 数据结构学习系列之顺序表的两种删除方式

    方式1: 在顺序表的末端删除所存储的数据元素,代码如下: 示例代码: 注意事项: 1.形参传入到具有删除数据元素功能的函数后,需要做 入参合理性检查 ; 2.还需要判断此时 顺序表所存储的数据元素是否为空 ; 3. count是计数的变量 , 每次删除一个数据元素后,需要减

    2024年02月10日
    浏览(42)
  • 数据结构学习系列之顺序表的两种插入方式

    方式1: 在顺序表 末端插入 数据元素,代码如下: 示例代码: 注意事项: 1.形参传入到具有插入数据元素功能的函数后,需要做 入参合理性检查 ; 2.还需要判断此时 顺序表所存储的数据元素是否已满 ; 3.本示例代码中的 count是计数的变量 , 每次插入一个数据元素后,需

    2024年02月10日
    浏览(37)
  • python里面将接口返回的json格式数据写入到数据库的两种方案及其局限性

    方案一: 使用MySQLdb或pymysql等Python MySQL数据库连接库将数据插入到MySQL数据库 方案二: 使用pandas库将JSON数据转换为DataFrame对象,然后使用to_sql()方法将数据存入MySQL数据库** 对整体的数据格式支持自定义处理,能处理较为复杂的数据格式 首先,我们使用json.load()函数将\\\"data.

    2024年02月14日
    浏览(44)
  • C语言:当函数定义时遗漏函数返回值类型以及函数遗漏return语句

    相关阅读 C语言 https://blog.csdn.net/weixin_45791458/category_12423166.html?spm=1001.2014.3001.5482          函数定义时需要明确给出返回值的类型,比如int main();表示主函数返回一个整数值,void func();表示func函数不返回值(但会函数也会返回,这是需要区分的)。         void main();这种写法

    2024年02月19日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包