调用带引用&

问题描述 投票:0回答:1

我用指针解决了任务。但是我想问一下是否有可能用&引用来调用函数。我认为这样会更容易理解。

    void sortieren(cBruch* a, int anzahl)
    {


        for (int n = anzahl; n > 1; n--)
        {
            for (int i = 0; i < n - 1; i++)
           {

                if (*(a + i) > * (a + i + 1))
                {
                    (a + i)->tausch((a + i), (a + i + 1));

                }
            }
        }
    }
c++ arrays reference function-call
1个回答
3
投票

[根据您对a的使用,它似乎是指向cBruch对象数组的指针。如果需要使用此类数组,则必须将参数保留为指针。但是,您可以更改其在函数中的使用方式。

void sortieren(cBruch* a, int anzahl)
{
   for (int n = anzahl; n > 1; n--)
   {
      for (int i = 0; i < n - 1; i++)
      {
         if ( a[i] > a[i + 1])
         {
            a[i].tausch((a + i), (a + i + 1));
         }
      }
   }
}

如果将cBrunch::tausch更改为接受cBruch&而不是cBruch*,则可以将该函数的调用更改为:

a[i].tausch(a[i], a[i + 1]);

1
投票

在您的代码中,您具有函数参数指针a

void sortieren(cBruch* a, int anzahl)

被解引用为数组:

if (*(a + i) > * (a + i + 1))

所以,不,a不能更改为任何类型的引用。

© www.soinside.com 2019 - 2024. All rights reserved.