Santer0101 2022-03-19 19:46 采纳率: 42.9%
浏览 8
已结题

关于一维数组地址传入函数但是值并没有改变的问题

今天遇到一个问题,很是头疼。描述如下:
写快速排序算法时,最后调用了函数

void QuickSort(int *R)
{
    int length;
    length = sizeof(R) / sizeof(int);
    QSort(R, 1, length-1);     //对R[ 1 ] 到R[ length-1 ] 之间的元素进行快速排序
}

其中参数中的R是一维数组的首元素地址,即R[ 10 ]中的R。然后运行之后,输出发现R并没有被排序。但是如果把QuickSort()函数中的内容放在主程序中运行,又能够排序了。请问一下大家,这是个什么情况。

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-03-19 20:00
    关注

    length = sizeof(R) / sizeof(int);
    这行是错的,在函数里的sizeof(R)实际是得到指针的长度,不是数组的长度,你应该将数组的长度作为参数传递进来

    void QuickSort(int *R,int n)
    {
        QSort(R, 1, n-1);    
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c