织心星笛 2023-02-03 20:03 采纳率: 33.3%
浏览 30
已结题

关于C++利用分文件实现冒泡法出现的问题

此问题系本人自学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两个数字。
希望大家能帮忙解答一下,非常感谢!

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2023-02-03 20:15
    关注

    首先,数组长度只能由外界实参传递给形参。其次,改为在函数里进行len的计算,是得不到正确数组的长度的,因为形参传递过去的只是个地址,通过计算得不出数组的长度。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月11日
  • 已采纳回答 2月3日
  • 创建了问题 2月3日

悬赏问题

  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊