首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C通过引用传递

C通过引用传递
EN

Stack Overflow用户
提问于 2013-01-26 23:21:29
回答 3查看 1.2K关注 0票数 1

在我的lSearch函数(线性搜索)中,我试图通过引用传递一个名为*numComparison的变量。

每次进行比较时,它都应该递增,但由于某些原因,它并没有这样做。为什么不行?当它转到main的末尾时..该函数可以工作(因为它将找到一个比较,或者如果没有找到比较,它将返回-1 ),但是numComparisons值每次都输出为0。

代码语言:javascript
复制
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;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-26 23:22:55

变化

代码语言:javascript
复制
    *numComparisons++;

代码语言:javascript
复制
    (*numComparisons)++;

后缀增量比取消引用运算符具有更高的优先级,因此您的代码会递增指针,而不是递增指向的值。

票数 6
EN

Stack Overflow用户

发布于 2013-01-26 23:23:12

代码语言:javascript
复制
*numComparisons++;

不会在该指针处递增int,它会递增指针本身。

您需要添加适当的括号:

代码语言:javascript
复制
(*numComparisons)++
票数 1
EN

Stack Overflow用户

发布于 2013-01-26 23:30:32

*numComparisons++表示指针先递增4(在使用数组时很有帮助)

使用(*numcomparisons)++递增numcomparisons指向的int

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14538311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档