一.指针的使用案例:
(1):函数中返回多个变量,例如:
#include<stdio.h>
void minmax(int a[], int len, int *max,int *min);
int main(void){
int a[] ={1,2,3,4,5,6,7,8,9,10,14,16,17,21,23,66};
int min,max;
minmax(a,sizof(a)/sizof(a[0]),&min,&max);
return 0;
}
void minmax(int a[], int len, int *min, int *max)
{
int i;
*min =*max =a[0];
for(i=1;i<len;i++){
if(a[i] <*min) *min = a[i];
if(a[i] >*max) *max= a[i];
}
}
(2)函数返回运算状态,结果通过指针返回,例如:
#include<stdio.h>
int divide(int a,int b,int *result);
int main(void)
{
int a=5,b=2,c;
if(divide(a,b,&c){
printf("%d / %d = %d",a,b,c);
}
return 0;
}
int divide(int a,int b,int *result);
{
int ret=1;
if(b==0){
ret=0;
}else{
*result=a/b;
}
return ret;
}
二.关于给指针加const
指针是const:表示一旦得到了某个变量的地址,不能在指向其他变量。
例如:int *const q=&i;? q是const
所指是const:表示不能通过这个指针去修改那个变量(并不能是那个变量成为const)
例如:const int *p =&i; *p不能做赋值运算。
区分方式:判断const在*的前面还是后面,在前面则是所指是const,在后面就是指针为const。
Tips:const int a[]={1,2,3,4,5}表示的是const数组,数组本身是个const指针代表的是a这个数组不能指向其他数组,在外面再加一个const就代表的是里面的值也不能发生变化,所以这类数组只能通过初始化赋值。
|