用c++跑冒泡排序,主函数调用自定义函数时参数传不过去


#include<stdio.h>

void BubbleSort(int a[],int n)
{
    int i, j;
     int flag=1;
     int temp;
     for(j = 1;j < n && flag==1 ; j++)
     {
      flag=0;
      for(i = 1;i <= n - j; i++)
      {    
        if(a[i]>a[i+1])
        {
          flag=1;                         
          temp = a[i];
          a[i] = a[i+1];
          a[i+1] = temp;
    }
      }
      }
}

int main()
{
     int a[5]={1,2,5,3,4};
     BubbleSort(a[5],5);
}

编译后提示:
27 20 冒泡排序.cpp [Error] invalid conversion from 'int' to 'int*' [-fpermissive]

如果不用主函数,

#include<iostream>
using namespace std;
class A
{
    void BubbleSort(int a[],int n)
    {
        int i,j,temp;
        int flag=1;
        for(i=1;i<n&&flag==1;i++)
        {
            flag=0;
            for(j=1;j<=n-i;j++)
            {
                if(a[j]>a[j+1])
                {
                    flag=1;
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                 } 
            }
        }
    }
};



则会提示 [Error] ld returned 1 exit status
请教一下该怎么办哇

BubbleSort(a[5],5);
这里传参的时候只用传数组名字,也就是地址

BubbleSort(a,5);

修改之后:

#include<stdio.h>
void BubbleSort(int a[],int n)
{
    int i, j;
     int flag=1;
     int temp;
     for(j = 1;j < n && flag==1 ; j++)
     {
      flag=0;
      for(i = 1;i <= n - j; i++)
      {
        if(a[i]>a[i+1])
        {
          flag=1;
          temp = a[i];
          a[i] = a[i+1];
          a[i+1] = temp;
    }
      }
      }
}
int main()
{
     int a[5]={1,2,5,3,4};
     BubbleSort(a,5);
     for(int i=0;i<5;i++){
        printf("%d ",a[i]);
     }
}

img

传入的应该是数组,你写a[5]实际上是传入了一个int(而且访问越界了)
修改如下
有帮助望采纳~

...
int main()
{
     int a[5]={1,2,5,3,4};
     BubbleSort(a,5);
}

修改如下:
函数调用传递a即可
排序循环要从0开始,不是从1开始

 
#include<stdio.h>
void BubbleSort(int a[],int n)
{
    int i, j;
     int flag=1;
     int temp;
     for(j = 0;j < n-1 && flag==1 ; j++)
     {
      flag=0;
      for(i = 0;i <= n - j-1; i++)
      {    
        if(a[i]>a[i+1])
        {
          flag=1;                         
          temp = a[i];
          a[i] = a[i+1];
          a[i+1] = temp;
    }
      }
      }
}
int main()
{
     int a[5]={1,2,5,3,4};
     BubbleSort(a,5);
      return 0;
}
 

int main()

{

     int a[5]={1,2,5,3,4};

     BubbleSort(a,5);

}

要BubbleSort(a,5);
数组名是a,不是a[5]