📜  数组传递给C中的函数

📅  最后修改于: 2020-10-22 01:28:10             🧑  作者: Mango

将数组传递给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
int minarray(int arr[],int size){  
int min=arr[0];  
int i=0;  
for(i=1;iarr[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 
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 
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