从方法的参数开始讲起。
一、存放整型数据的指针
void CalledByAddress(int *a)
{
*a = *a+1;
}
void CalledByValue(int a)
{
a = a+1;
}
int main()
{
int c = 3;
CalledByValue(c);
printf("%i\n",c)//不管CalledByValue方法中做什么操作都不会改变c的值;
CalledByAddress(&c);
printf("%i\n",c)//打印4;
}
void CalledByValuePoint(Point_t point) //called by value
{
double temp = point.x;
point.x = point.y;
point.y = temp;
}
void CalledByAddressPoint(Point_t *ptr) //called by adress
{
double temp = ptr->x;
ptr->x = ptr->y;
ptr->y = temp;
}
int main()
{
Point_t point;
point =(Point_t){3.0,4.0};
CalledByValuePoint(point); //坐标不变
PrintPoint(point);
ReflectPoint(&point); //坐标对调
PrintPoint(point);
}
三、存放数组数据的指针
int LocateCharacter(char *s,char c) 或者 int LocateCharacter(char s[],char c)//对数组来说都是地址调用。不存在值调用
{
int i=0;
while(i<strlen(s)){
if(s[i]==c){
s[i]='a';
return i;
}
i=i+1;
}
return -1;
}
int main()
{
char a[]="hello";
LocateCharacter(a,'e');//返回 hallo;
LocateCharacter(&a[0],'e');//返回hallo; 对于数组 a == &a[0]
}
百达表行,祝你百事可达>>