C语言入门指针总结

C语言中指针的几种正误方式

错误1、

void Swap(int a, int b)//未传指针
{
 int tmp = a;
 a = b;
 b = tmp;
}

此方式在调用函数的进行交换的代码,可以看出,只是单纯的将各自存储的地址进行交换而已。没有进行传指针!

错误2、

void Swap(int* p1, int* p2)//未解引用
{
 int* tmp = p1;
 p1 = p2;
 p2 = tmp;
}

此方式虽然传入的是a和b的地址,但是没有对相应的地址进行操作。没有解引用!

错误3、

void Swap(int* p1, int* p2)//有野指针 tmp的值未初始化
{
 int* tmp;
 *tmp = *p1;
 *p1 = *p2;
 *p2 = *tmp;
}

此方式用到了指针传递,也解引用了,但是tmp的值未初始化!

正确方式

void Swap(int* p1, int* p2)
{
 int tmp;
 tmp = *p1;
 *p1 = *p2;
 *p2 = tmp;
}

总结

1、一个函数想修改另一个函数的值,必须传指针和解引用
2、野指针、空悬指针:没有访问权限的地址
3、空指针(NULL):表示当前指针无效

你可能感兴趣的:(C语言,c语言)