在我的lSearch函数(线性搜索)中,我试图通过引用传递一个名为*numComparison的变量。
每次进行比较时,它都应该递增,但由于某些原因,它并没有这样做。为什么不行?当它转到main的末尾时..该函数可以工作(因为它将找到一个比较,或者如果没有找到比较,它将返回-1 ),但是numComparisons值每次都输出为0。
int lSearch(int arr[], int size, int target, int *numComparisons)
{
int counter;
for(counter = 0; counter < size; counter++)
{
*numComparisons++;
if(arr[counter] == target)
return(*numComparisons);
}
return(-1);
}
int main(int argc, char * argv[])
{
int enterNumbers[1000], copy[1000], counter;
int numComparisons = 0, target = 26;
printf("Enter in numbers and press -999 when you are done: ");
for(counter = 0;; counter++)
{
scanf("%d", &enterNumbers[counter]);
if(enterNumbers[counter] == -999)
break;
}
arrayCopy(enterNumbers, copy, counter);
sort(copy, counter);
if(lSearch(copy, counter, target, &numComparisons) >=0)
{
printf("Target number found in linear search.\n");
printf("Number of comparisons: %d\n", numComparisons);
}
else
{
printf("Target number was not found in the linear search\n");
printf("Number of comparisons: %d\n", numComparisons);
}
return 0;发布于 2013-01-26 23:22:55
变化
*numComparisons++;至
(*numComparisons)++;后缀增量比取消引用运算符具有更高的优先级,因此您的代码会递增指针,而不是递增指向的值。
发布于 2013-01-26 23:23:12
*numComparisons++;不会在该指针处递增int,它会递增指针本身。
您需要添加适当的括号:
(*numComparisons)++发布于 2013-01-26 23:30:32
*numComparisons++表示指针先递增4(在使用数组时很有帮助)
使用(*numcomparisons)++递增numcomparisons指向的int
https://stackoverflow.com/questions/14538311
复制相似问题