关于野指针:也称为悬挂指针,你没有访问权限的地址(指针),这个指针有可能不存在也有可能存在但是你不能访问
野指针很麻烦,不好判断(错误的电话号码)
1.地址不存在(电话号少一位)
2.地址存在但是不能访问(电话号写成别人)
3.地址之前可以访问,但现在不可以(更换电话号码,我却给你之前的号码打电话)
结论:一个函数(父函数)调用另一个函数(子函数),想通过子函数修改父函数的数据.必须传指针,子函数内部解引用
换句话说,子函数的改变要想影响父函数的数据必须传指针和解引用.
//交换两个变量的值,列举常见的三个错误
void Swap_err1(int a,int b)
{
int tmp = a;
a = b;
b = tmp;
}
void Swap_err2(int *p1,int *p2)//错误
{
int *tmp = p1;
p1 = p2;
p2 = tmp;
}
void Swap_err3(int *p1,int *p2)
{
int *tmp;//野指针(悬挂指针)
*tmp = *p1;//崩溃
*p1 = *p2;
*p2 = *tmp;
}
void Swap(int *p1,int *p2)//正确
{
int tmp;
tmp = *p1;
*p1 = *p2;
*p2 = tmp;
}
int main()
{
int a = 10;
int b = 20;
/*int tmp = a;
a = b;
b = tmp;*/
Swap(&a,&b);
printf("%d,%d\n",a,b);
//int *p = (int *)2000;//野指针,没有访问权限
//*p = 10;
//printf("haha\n");
return 0;
}