问题遇到的现象和发生背景
把数组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;
}
运行结果及报错内容
我的解答思路和尝试过的方法
#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;
}