使用引用指针而不是指针指针(双指针)

时间:2013-04-02 09:31:44

标签: c++ pass-by-reference

我编写了一个函数来查找3指针指向的最小3变量,并且在函数调用之后我想要更新指向min的指针。值。

为了达到这个目的,我使用指向指针的指针。我可以使用引用指针变量而不是指向指针(双指针)的指针来使代码清理。

int findRange(int p1,int p2, int p3)
{
    return max(max(abs(p1-p2),abs(p2-p3)),abs(p3-p1));
}


int** findMin( int **p1,int **p2,int **p3)
{
    int **m = p1;
    if (**m > **p2) m = p2;
    if (**m > **p3) return p3;
    return m;
}



int main()
{
    struct _a{
        int a,b,c;
    } result;
    int a[]={2, 10, 15, 24, 26,-1};
    int b[]={0, 9, 12, 20,-1};
    int c[]={10, 18, 22, 30,-1};
    int i=0;
    int *p1=a,*p2=b,*p3=c;
    int min=INT_MAX;
    int **t;
    while((*p1 != -1)&&(*p2!=-1)&&(*p3!=-1))
    {
        int range=findRange(*p1,*p2,*p3);
        if(range<min){
        result.a=*p1;
        result.b=*p2;
        result.c=*p3;
        min=range;
        }
        t=findMin(&p1,&p2,&p3);

        (*t)++;

    }
    (*t)--;
    cout<<result.a<<"'"<<result.b<<"'"<<result.c<<"' range="<<min<<endl;

    return 0;
}

0 个答案:

没有答案