gpt4 book ai didi

c - 无法将int数组发送到C中的函数中

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:46 25 4
gpt4 key购买 nike

我尝试编写一个执行二分查找的函数。我写的代码如下:

int binarySearch (int num[], int value, int left, int right)
{
if (left > right)
return -1;
else
{
int middle = (left+right)/2;
if (num[middle] = value)
return middle;
else
{
if (value < num[middle])
return binarySearch(num, value, left, middle-1);
else
return binarySearch(num, value, middle+1, right);
}
}
return 0;
}

void main()
{
int num[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int result;
result = binarySearch(num,6,0,15);
printf("The result is: %d", result);
}

在尝试调试时我发现 num[] 数组没有被发送到函数中。当我查看函数外部的数组时,它包含 16 个数字。当我使用 F11 跳入函数时,arr[] 接收的数组仅包含 0。我尝试的任何方法似乎都无法解决它。有人知道出了什么问题吗?

非常感谢,

罗伯特

最佳答案

binarySearch 函数中,num 充当指针。因此,当您调试时,它仅显示 num 指向的第一个值 (0)。

如果你想将一维数组作为参数传递给函数,你必须用以下三种方式之一声明一个形式参数,所有三种声明方法都会产生相似的结果,因为每个告诉编译器将要接收一个整数指针

int func(int arr[], ...){
.
.
.
}

int func(int arr[SIZE], ...){
.
.
.
}

int func(int* arr, ...){
.
.
.
}

但是,您在 if (arr[middle] = value) 中错误地进行了赋值而不是比较。

谢谢!!!

关于c - 无法将int数组发送到C中的函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37040774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com