赞
踩
指针:
指针等同地址
&变量:获取变量的地址,取地址符
int *p;在定义时,*表示当前是定义指针变量
*p:访问p所指向的内容,间接访问符也称为解引用
正确代码:
void Swap(int *p1,int *p2) { int tmp = *p1; *p1 = *p2; *p2 = tmp; } int main() { int a = 10; int b = 20; Swap(&a,&b); printf("%d,%d\n",a,b);//交换成功 return 0; }
常见错误写法
1.仅在子函数中交换了a,b的值,子函数中的变量a,b与主函数中的a,b不是同一个
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;
}
3.tmp为未被初始化的野指针,会使得程序崩溃
野指针:也称为悬挂指针,你不能访问的内存(这个地址有可能存在有可能不存在总之你不能访问)
void Swap_err3(int *p1,int *p2)
{
int *tmp;
*tmp = *p1;//崩溃
*p1 = *p2;
*p2 = *tmp;
}
结论:在一个函数中想要修改另一个函数的数据,必须传指针,内部解引用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。