在c中传递数组给函数

本文概述

  • C函数对数组进行排序
  • 从函数返回数组
在C语言中,存在各种常见问题,需要将多个相同类型的变量传递给一个函数。例如,考虑一个以升序对10个元素进行排序的函数。这样的函数需要从主函数传递10个数字作为实际参数。在这里,我们可以声明并初始化一个数组并将其传递给函数,而不是声明10个不同的数字然后传递给函数。这将解决所有复杂性,因为该函数现在可用于任意数量的值。
我们知道array_name包含第一个元素的地址。在这里,我们必须注意,我们只需要在旨在接受数组的函数中传递数组的名称。定义为形式参数的数组将自动引用由定义为实际参数的数组名称指定的数组。
请考虑以下语法,以将数组传递给函数。
functionname(arrayname); //passing array

声明接收数组作为参数的函数的方法
有3种方法声明要用于接收数组作为参数的函数。
第一种方式:
return_type function(type arrayname[])

声明空白下标符号[]是广泛使用的技术。
第二种方式:
return_type function(type arrayname[SIZE])

(可选)我们可以用下标符号[]定义尺寸。
第三方式:
return_type function(type *arrayname)

你还可以使用指针的概念。在指针章节中,我们将学习它。
C语言将数组传递给函数示例
#include< stdio.h> int minarray(int arr[], int size){ int min=arr[0]; int i=0; for(i=1; i< size; i++){ if(min>arr[i]){ min=arr[i]; } }//end of for return min; }//end of functionint main(){ int i=0, min=0; int numbers[]={4, 5, 7, 3, 8, 9}; //declaration of arraymin=minarray(numbers, 6); //passing array with size printf("minimum number is %d \n", min); return 0; }

输出量
minimum number is 3

C函数对数组进行排序
#include< stdio.h> void Bubble_Sort(int[]); void main () { int arr[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; Bubble_Sort(arr); } void Bubble_Sort(int a[]) //array a[] points to arr. { int i, j, temp; for(i = 0; i< 10; i++) { for(j = i+1; j< 10; j++) { if(a[j] < a[i]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } } printf("Printing Sorted Element List ...\n"); for(i = 0; i< 10; i++) { printf("%d\n", a[i]); } }

输出量
Printing Sorted Element List ... 7 9 10 12 23 23 34 44 78 101

从函数返回数组众所周知,一个函数不能返回多个值。但是,如果我们尝试将return语句写为return a,b,c; 要返回三个值(a,b,c),该函数将返回最后提到的值,在本例中为c。在某些问题中,我们可能需要从一个函数返回多个值。在这种情况下,函数会返回一个数组。
返回数组类似于将数组传递到函数中。数组的名称是从函数返回的。要使函数返回数组,请使用以下语法。
int * Function_name() { //some statements; return array_type; }

为了存储从函数返回的数组,我们可以定义一个指向该数组的指针。我们可以通过增加指针来遍历数组,因为指针最初指向数组的基地址。考虑下面的示例,该示例包含一个返回已排序数组的函数。
#include< stdio.h> int* Bubble_Sort(int[]); void main () { int arr[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; int *p = Bubble_Sort(arr), i; printf("printing sorted elements ...\n"); for(i=0; i< 10; i++) { printf("%d\n", *(p+i)); } } int* Bubble_Sort(int a[]) //array a[] points to arr. { int i, j, temp; for(i = 0; i< 10; i++) { for(j = i+1; j< 10; j++) { if(a[j] < a[i]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } } return a; }

【在c中传递数组给函数】输出量
Printing Sorted Element List ... 7 9 10 12 23 23 34 44 78 101

    推荐阅读