指针应用场景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指针返回。