关于C++冒泡排序的问题,求解决

问题遇到的现象和发生背景

把数组len在函数体内定义,数组不进行冒泡排序
把len定义为参数,正常运行

问题相关代码
#include<iostream>
using namespace std;
void BubbleSort(double* a) {

    int len = sizeof(a) / sizeof(double); //为什么把len放在函数体内冒泡排序就不管用

    for (int i = 0; i < len; i++)
    {
        for (int j = 0; j < len - i - 1; j++)
        {
            if (a[j] > a[j + 1]) {
                double t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }

        }
    }
}

int main(){
    double a[]{ 10.5,5.5,6.6,0.7,6.3 };

    BubbleSort(a);


    for (size_t i = 0; i < sizeof(a) / sizeof(double); i++)
    {
        cout << a[i] << endl;
    }
    return 0;

}

运行结果及报错内容

img

我的解答思路和尝试过的方法
#include<iostream>
using namespace std;
void BubbleSort(double* a,int len) {



    for (int i = 0; i < len; i++)
    {
        for (int j = 0; j < len - i - 1; j++)
        {
            if (a[j] > a[j + 1]) {
                double t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }

        }
    }
}

int main(){
    double a[]{ 10.5,5.5,6.6,0.7,6.3 };
    int len = sizeof(a) / sizeof(double); //为什么把len放在函数体内冒泡排序就不管用

    BubbleSort(a,len);


    for (size_t i = 0; i < sizeof(a) / sizeof(double); i++)
    {
        cout << a[i] << endl;
    }
    return 0;

}

我想要达到的结果

一般长度必须作为形参,传递过程中,数组传递过去退化成了指针,用sizeof求出来的长度是错误的

直接sort