指针的使用

应用场景一

交换两个变量的值

  1. void swap(int *pa,int *pb){
  2. int t=*pa;
  3. *pa=*pb;
  4. *pb=t;
  5. }

什么时候使用指针:

1、函数返回多个值,某些值就只能通过指针带回

2、传入的参数实际上是需要保持待回的结果的变量

应用场景二

函数返回运算的状态,结果通过指针返回

常用的套路是让函数返回特殊的不属于有效范围内的值来表示出错:-1或0(在文件操作会看到大量例子);

但是当任何数值都是有效的可能结果时,就得分开返回了。

例:

  1. #include<stdio.h>
  2. //如果除法成功返回1,失败返回0;
  3. int divide(int a,int b,int *result);
  4. int main(){
  5. int a=5;
  6. int b=2;
  7. int c;
  8. if(divide(a,b,&c)){
  9. printf("%d/%d=%d\n",a,b,c);
  10. }
  11. return 0;
  12. }
  13. int divide(int a,int b,int *result){
  14. int ret=1;
  15. if(b==0){
  16. ret=0;
  17. }else{
  18. *result=a/b;
  19. }
  20. return ret;
  21. }

注:常见的错误:

定义了指针变量,还没有指向任何变量,就开始使用指针