当前位置:   article > 正文

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

c语言怎么返回数组

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

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

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

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

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

方法二:采用static关键字

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

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

  1. #include<stdio.h>
  2. void function(int str[],int len)
  3. {
  4. int i=0;
  5. for(i=0;i<len;i++){
  6. str[i]=str[i]+1;
  7. }
  8. }
  9. int main()
  10. {
  11. int str[5]={1,2,3,4,5};
  12. int len=5;
  13. function(&str,len);
  14. for(int i=0;i<len;i++)
  15. {
  16. printf("%d",str[i]);
  17. }
  18. return 0;
  19. }

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

  1. void function(int *str,int len)
  2. {
  3. for(int i=0;i<len;i++){
  4. *(str+i)=str[i]+1;
  5. }
  6. }
  7. int main()
  8. {
  9. int str[5]={1,2,3,4,5};
  10. int len=5;
  11. function(str,len);
  12. for(int i=0;i<len;i++)
  13. {
  14. printf("%d",str[i]);
  15. }
  16. return 0;
  17. }

方法二:使用&引用,引用数组直接带回数组值。

  1. #include<stdio.h>
  2. void function(int(&str)[5],int len)
  3. {
  4. int i=0;
  5. for(i=0;i<len;i++){
  6. str[i]=str[i]+1;
  7. }
  8. }
  9. int main()
  10. {
  11. int str[5]={1,2,3,4,5};
  12. int len=5;
  13. function(str,len);
  14. for(int i=0;i<len;i++)
  15. {
  16. printf("%d",str[i]);
  17. }
  18. return 0;
  19. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/404337
推荐阅读
相关标签
  

闽ICP备14008679号