C 语言返回数组

2025年3月17日 | 阅读 3 分钟

什么是数组?

数组是一种数据结构,用于存储固定大小的、同质的数据集合。简而言之,我们可以说数组是相同类型变量的集合。

例如,如果我们想声明 'n' 个变量,n1, n2...n.,如果我们单独创建所有这些变量,那将是一项非常繁琐的任务。在这种情况下,我们创建一个相同类型的变量数组。数组的每个元素都可以使用元素的索引来访问。

首先,让我们看看如何将一维数组传递给函数。

将数组传递给函数

在上面的程序中,我们首先创建了数组 arr[],然后我们将此数组传递给 getarray() 函数。getarray() 函数打印数组 arr[] 的所有元素。

输出

Return an Array in C

将数组作为指针传递给函数

现在,我们将看到如何将数组作为指针传递给函数。

在上面的代码中,我们将数组作为指针传递给了函数。printarray() 函数打印数组的元素。

输出

Return an Array in C

注意:从上面的例子中,我们观察到数组被按引用传递给函数,这意味着数组在函数外部也存在。

如何从函数返回数组

返回指向数组的指针

在上面的程序中,getarray() 函数返回一个名为 'arr' 的变量。它返回一个局部变量,但这是一个非法的内存位置,因为它是在函数内堆栈上分配的。由于程序控制返回到 main() 函数,并且堆栈上的所有变量都会被释放。因此,我们可以说这个程序返回了一个已经被释放的内存位置,所以程序的输出是 段错误

输出

Return an Array in C

有三种正确返回数组到函数的方法

  • 使用动态分配的数组
  • 使用静态数组
  • 使用结构体
Return an Array in C

通过将要返回的数组作为参数传递给函数来返回数组。

输出

Return an Array in C

使用 malloc() 函数返回数组。

输出

Return an Array in C

使用静态变量

在上面的代码中,我们在 getarray() 函数中创建了名为 arr[] 的静态变量,该变量在整个程序中都可用。因此,getarray() 函数返回变量 'arr' 的实际内存位置。

输出

Return an Array in C

使用结构体

结构体是一种用户定义的数据类型,可以包含不同类型项的集合。现在,我们将创建一个使用结构体返回数组的程序。

输出

Return an Array in C
下一个主题C 教程