使用引用调用查找数组中的最大元素(函数和指针)

Finding largest element in a array using call by reference ( Functions & Pointers )

我想使用函数和指针的引用调用方法找到数组中的最大元素。我在函数调用时出错。这是我的尝试:

#include <stdio.h>
void bigg(int *a[10],int *N);

int main()
{
    int a[10],i,N,p;
    printf("Enter the total number of elements in the array:\n");
    scanf("%d",&N);
    printf("Enter the elements in the array one by one:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    bigg(&a,&N);    
}

void bigg(int *a[10],int *N)
{
    int i,max;
    
    max = *a[0];
    
    for(i=0;i<*N;i++)
    {
        if( *a[i] > max)
        {
            max = *a[i];
        }
    }
    printf("The biggest element in the given array is: %d",max);    
}

您传递的内容与预期参数不匹配。

函数 bigg 的第一个参数是 int *[10],它是一个 指针数组 。您传递的 &a 是一个 指向数组 的指针,类型为 int (*)[10].

你实际上一个都不想要。在大多数情况下,数组名称会转换为指向其第一个元素的指针。因此,如果您通过它,您将可以访问这些元素。因此,请更改您的函数定义以接受第一个参数的 int *(以及第二个参数的 int,因为您没有更改 N):

void bigg(int *a, int N)
{
    int i,max;
    
    max = a[0];
    
    for(i=0;i<N;i++)
    {
        if( a[i] > max)
        {
            max = a[i];
        }
    }
    printf("The biggest element in the given array is: %d",max);    
}

并这样称呼它:

bigg(a,N);

你的指针基础知识不清楚。 对于这个问题,它有效。

#include <stdio.h>
void bigg(int a[],int *N);

int main()
{
    int a[10],i,N,p;
    printf("Enter the total number of elements in the array:\n");
    scanf("%d",&N);
    printf("Enter the elements in the array one by one:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    bigg(a,&N);    
}

void bigg(int a[],int *N)
{
    int i,max;
    
    max = a[0];
    
    for(i=0;i<*N;i++)
    {
        if( a[i] > max)
        {
            max = a[i];
        }
    }
    printf("The biggest element in the given array is: %d",max);    
}