传入的参数是一个指针,不是原数组,所以求出的len不对
数组在传参时会自动退化成指针,导致sizeof(arr)的结果实际上是指针的长度。
可以使用模板引用传递数组。
template<size_t size>
void sort(int (&arr)[size])
{
//在这里贴上代码
}
//编码及注释:Code_流苏
#include <stdio.h>
//冒泡排序
void Bubble_sort(int a[], int len)
{
int i, j, temp;
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
// > 为升序排序 如果是降序排序用 <
if (a[j] > a[j + 1]) {
//通过中间变量的赋值实现位置的交换
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
//主函数
int main()
{
int a[] = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
int len = (int)sizeof(a)/sizeof(*a);
//调用冒泡排序函数进行排序
Bubble_sort(a, len);
int i;
//循环输出排序后的结果:
for (i = 0; i < len; i++)
printf("%d ", a[i]);
return 0;
}
希望对题主有所帮助!可以的话,帮忙点个采纳!