指针应用场景总结

指针应用场景1:交换两个变量的值

#include<iostream>
#include<cmath>
using namespace std;

void mySwap(int *a,int *b)
{
 int temp = *a;
 *a = *b;
 *b = temp;
}

int main()
{
 int a = 6;
 int b = 1;
 mySwap(&a,&b);
 cout<<"a="<<a<<endl;
 cout<<"b="<<b<<endl;
}

a和b的值通过指针进行了交换。

 

指针应用场景2a:函数返回多个值,某些值就只能通过指针返回,传入的参数实际上是需要保存带回的结果的变量。

#include<iostream>
#include<cmath>
using namespace std;

void myMinMax(int a[] , int len ,int *max ,int *min)
{
    *max = *min = a[0];
    for(int i = 1; i<len; i++)
    {
        if(a[i] > *max)
        {
            *max = a[i];
        }
        if(a[i] < *min)
        {
            *min = a[i];
        }
    }
}

int main()
{
    int a[] = {1,7,4,33,75,6,12};
    int min,max;
    myMinMax(a,sizeof(a)/sizeof(a[0]),&max,&min);
    cout<<"max="<<max<<endl;
    cout<<"min="<<min<<endl;
}

最大值和最小值通过指针max和min返回。

 

指针应用场景2b:函数返回运行的状态,结果通过指针返回

#include<iostream>
#include<cmath>
using namespace std;

bool divide(int a,int b,int *result)
{
    if(b == 0)
    {
        return false;
    }
    else
    {
        *result = a/b;
        return true;
    }
}

int main()
{
    int a = 6;
    int b = 2;
    int c = 0;
    if(divide(a,b,&c))
    {
        cout<<a<<"/"<<b<<"="<<c;
    }
    else cout<<"Error!"<<endl;

}

结果通过result指针返回。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注