把数组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;
}
一般长度必须作为形参,传递过程中,数组传递过去退化成了指针,用sizeof求出来的长度是错误的
直接sort