使用引用调用函数 &

Call Function with Reference &

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

    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));

                }
            }
        }
    }

在你的代码中你有函数参数指针 a:

void sortieren(cBruch* a, int anzahl)

作为数组取消引用:

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

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

查看您对 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]);