21xrx.com
2024-12-27 20:28:46 Friday
登录
文章检索 我的文章 写文章
C语言如何使用函数返回数组
2023-06-16 13:58:02 深夜i     --     --
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函数输出数组。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复