C语言教程
C语言控制语句
C语言函数
C语言数组
C语言指针
C语言字符串
C语言数学函数
C语言结构
C语言文件处理
C预处理器

C语言返回数组

什么是数组?

数组是一种存储固定数据的数据结构类型,同类数据集合的大小。简而言之,我们可以说数组是相同类型的变量的集合。
例如,如果我们要声明n个变量n1,n2 ... n。我们单独创建所有这些变量,那么这将变得非常繁琐。在这种情况下,我们创建具有相同类型的变量数组。可以使用元素的索引来访问数组的每个元素。
首先让我们看看如何将一维数组传递给函数。

将数组传递给函数函数

#include <stdio.h>
void getarray(int arr[])
{
    printf("Elements of array are : ");
    for(int i=0;i<5;i++)
    {
        printf("%d ", arr[i]);
    }
}
int main()
{
   int arr[5]={45,67,34,78,90};
   getarray(arr);
   return 0;
}
在上面的程序中,我们首先创建了数组 arr [] ,然后将该数组传递给函数getarray()。 getarray()函数将打印数组arr []的所有元素。
输出
在C中返回数组
将数组作为指针传递给函数
现在,我们将了解如何将数组作为指针传递给函数。
#include <stdio.h>
void printarray(char *arr)
{
    printf("Elements of array are : ");
    for(int i=0;i<5;i++)
    {
        printf("%c ", arr[i]);
    }
}
int main()
{
  char arr[5]={'A','B','C','D','E'};
  printarray(arr);
  return 0;
}
在上面的代码中,我们已将数组作为指针传递给了函数。函数 printarray()打印数组的元素。
输出
在C中返回数组
注意: 从以上示例中,我们观察到数组作为引用传递给函数,这意味着数组也保留在函数之外。
如何从函数返回数组
返回指向数组的指针
#include <stdio.h>
int *getarray()
{
    int arr[5];
    printf("Enter the elements in an array : ");
    for(int i=0;i<5;i++)
    {
        scanf("%d", &arr[i]);
    }
    return arr;
}
int main()
{
  int *n;
  n=getarray();
  printf("\nElements of array are :");
  for(int i=0;i<5;i++)
    {
        printf("%d", n[i]);
    }
    return 0;
}
在上面的程序中, getarray()函数返回变量'arr'。它返回一个局部变量,但它是要返回的非法内存位置,该位置在堆栈中的函数内分配。由于程序控制返回到 main()函数,因此堆栈中的所有变量均被释放。因此,可以说该程序正在返回已经取消分配的内存位置,因此该程序的输出是分段错误。
Output
在C中返回数组
有三个将数组返回给函数的正确方法:
使用动态分配的数组 使用静态数组 使用结构 在C中返回数组
通过传递数组返回数组它将作为函数的参数返回。
#include <stdio.h>
int *getarray(int *a)
{
  
    printf("Enter the elements in an array : ");
    for(int i=0;i<5;i++)
    {
        scanf("%d", &a[i]);
    }
    return a;
}
int main()
{
  int *n;
  int a[5];
  n=getarray(a);
  printf("\nElements of array are :");
  for(int i=0;i<5;i++)
    {
        printf("%d", n[i]);
    }
    return 0;
}
输出
在C中返回数组
使用malloc()函数返回数组。
#include <stdio.h>
#include<malloc.h>
int *getarray()
{
    int size;
    printf("Enter the size of the array : ");
    scanf("%d",&size);
    int *p= malloc(sizeof(size));
    printf("\nEnter the elements in an array");
    for(int i=0;i<size;i++)
    {
        scanf("%d",&p[i]);
    }
    return p;
}
int main()
{
   int *ptr;
   ptr=getarray();
   int length=sizeof(*ptr);
   printf("Elements that you have entered are : ");
   for(int i=0;ptr[i]!='\0';i++)
    {
      printf("%d ", ptr[i]);
    }
  return 0;
}
输出
在C中返回数组
使用静态变量
#include <stdio.h>
int *getarray()
{
  static int arr[7];
  printf("Enter the elements in an array : ");
  for(int i=0;i<7;i++)
  {
      scanf("%d",&arr[i]);
  }
  return arr;
    
}
int main()
{
  int *ptr;
  ptr=getarray();
  printf("\nElements that you have entered are :");
  for(int i=0;i<7;i++)
  {
      printf("%d ", ptr[i]);
  }
}
在上面的代码中,我们在 getarray()函数中将变量 arr [] 创建为静态变量,该变量在整个程序中都可用。因此,函数getarray()返回变量' arr '的实际内存位置。
输出
返回C中的数组
使用结构
该结构是用户定义的数据类型,可以包含不同类型的项的集合。现在,我们将创建一个使用结构返回数组的程序。
#include <stdio.h>
#include<malloc.h>
struct array
{
    int arr[8];
};
struct array getarray()
{
    struct array y;
    printf("Enter the elements in an array : ");
    for(int i=0;i<8;i++)
    {
        scanf("%d",&y.arr[i]);
    }
    return y;
}
int main()
{
  struct array x=getarray();
  printf("Elements that you have entered are :");
  for(int i=0;x.arr[i]!='\0';i++)
  {
      printf("%d ", x.arr[i]);
  }
    return 0;
}
输出
在C中返回数组
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4