21xrx.com
2025-04-23 19:33:36 Wednesday
文章检索 我的文章 写文章
C语言如何使用函数返回数组
2023-06-16 13:58:02 深夜i     11     0
C语言 函数返回数组 指针 结构体 动态内存分配

在C语言中,函数可以返回基本数据类型(如int、float等),也可以返回指向数组的指针。但是,直接返回数组本身并不容易,因为在C语言中,数组名本身就表示指向数组首元素的指针。因此,为了让函数返回一个完整的数组,我们需要使用一些技巧。

方法一:使用指针

我们可以使用指针作为参数传递给函数,让函数在指针所指的内存中存储数组,并返回指针本身。下面是一个例子:

#include 
int* createArray(int size){
  int* array = (int*) malloc(size*sizeof(int));
  for(int i=0; i
    array[i] = i;
  }
  return array;
}
int main(){
  int* a = createArray(5);
  for(int i=0; i<5; i++){
    printf("%d ", a[i]);
  }
  free(a);
  return 0;
}

上面的代码中,createArray函数使用malloc函数分配了一个连续的内存空间,并在数组中存放了0到4的整数。由于函数返回的是指针,因此我们可以方便地在主函数中输出数组。

方法二:使用结构体

另一种方法是使用结构体来包含指向数组的指针和数组的大小,然后返回结构体。下面是一个例子:

#include 
struct Array{
  int* data; //指向数组的指针
  int size; //数组的大小
};
struct Array createArray(int size){
  struct Array array;
  array.data = (int*) malloc(size*sizeof(int));
  array.size = size;
  for(int i=0; i
    array.data[i] = i;
  }
  return array;
}
void printArray(struct Array array){
  for(int i=0; i
    printf("%d ", array.data[i]);
  }
  printf("\n");
  free(array.data);
}
int main(){
  struct Array a = createArray(5);
  printArray(a);
  return 0;
}

上面的代码中,createArray函数使用malloc函数分配了一个连续的内存空间,并在数组中存放了0到4的整数。然后,函数返回一个包含指向数组的指针和数组大小的结构体。在主函数中,我们可以调用printArray函数输出数组。

  
  

评论区