微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

变量的值正在改变,而没有在 C 中实际改变它

如何解决变量的值正在改变,而没有在 C 中实际改变它

在下面的二进制搜索代码中,key 的值在调用函数 binarySearch() 后会自动改变。尽管事实键在函数 binarySearch() 中作为引用传递。请让我知道后台发生了什么正在改变 Key 的值。

#include <stdio.h>
int binarySearch(int arr[],int key,int low,int high,int *middle){
    if(arr[*middle] == key)
        return *middle+1;
    else if(arr[*middle] > key && arr[*middle] > 0){
        high = *middle--;
        *middle = (low + high)/2;
        return binarySearch(arr,key,low,high,middle);
    }
    else if(arr[*middle] < key && key < arr[high]){
        low = *middle++;
        *middle = (low + high)/2;
        return binarySearch(arr,middle);
    }
 return -1;
}
main(){
    int arr[] = {1,2,3,4,5,6,7};
    int size = sizeof(arr)/sizeof(arr[0]);
    int key;
    int low = 0;
    int high = size - 1;
    int middle = (low + middle)/2;
    printf("Enter the key to be Searched: ");
    scanf("%d",&key);
    printf("%d",key);
    int result = binarySearch(arr,&middle);
    printf("%d",key);  
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?