此问题系本人自学C++时所遇到的,希望大家可以帮忙解答一下~
首先是能达到预期的正确头文件及C++代码主体↓
头文件bubble sort.h
#include <iostream>
using namespace std;
void bubblesort(int * arr,int len)
{
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if (arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
C++主体
#include "bubble sort.h"
int main()
{
int arr[10] = {4,3,6,9,1,2,10,8,7,5};
int len = sizeof(arr) / sizeof(arr[0]);
bubblesort(arr,len);
system("pause");
return 0;
}
而当我把数组长度由外界实参传输给形参的方法,改为直接在头文件里进行len的计算,并直接在本体中引用,却无法实现预期的效果。其头文件与C++主体如下(有变化的地方倾斜(前后加_)表示)
头文件bubble sort.h
#include <iostream>
using namespace std;
void bubblesort(_int * arr_)
{
_int len = sizeof(arr) / sizeof(arr[0]);_
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if (arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
for (int i = 0; i < len; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
C++主体
#include "bubble sort.h"
int main()
{
int arr[10] = {4,3,6,9,1,2,10,8,7,5};
bubblesort(_arr_);
system("pause");
return 0;
}
后者实现的结果只有3和4两个数字。
希望大家能帮忙解答一下,非常感谢!