- 首先从局部变量说起,已知如果要写一个交换两个变量值的函数,由于C语言的函数是值传递特性,在不用全局变量的情况下是无法成功的。指针的第一个用法就来了,作为函数的形参。
#include<cstdio>
void swap(int* a,int* b){
int temp=*a;
*a=*b;
*b=temp;
}
int main(){
int a=1,b=2;
int* p=&a,*m=&b;
swap(p,m);
printf("%d %d",a,b);
return 0;
}
-
另外由于函数的返回值是有限的,可以用指针直接在函数内部处理需要的数据,而将返回值作为一个状态符进行传输,这种用法在很多地方都有效。
比如一个简单的除法函数
#include<cstdio>
int devide(int a,int b,int* c){
if(b==0){
return 0;
}else{
*c=a/b;
return 1;
}
}
int main(){
int a=10,b=5,result;
int* p = &result;
devide(a,b,p);
if(devide(a,b,p)){
printf("%d",result);
}else{
printf("ERROR");
}
return 0;
}