C语言数组传参基础教程文档
收录于 2023-04-20 00:10:05 · بالعربية · English · Español · हिंदीName · 日本語 · Русский язык · 中文繁體
在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 function int main(){ int i=0,min=0; int numbers[]={4,5,7,3,8,9};//declaration of array min=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; }
输出
Printing Sorted Element List ... 7 9 10 12 23 23 34 44 78 101