实现两数交换
错误代码:
#include <stdio.h>
void Swap(int *x,int *y)
{
int *pTemp;
//printf("%d %d\n",*x,*y);
pTemp=x;
x=y;
y=pTemp;
//借助指针pTemp交换的是地址值(即x和y的指向),不是指针指向的内容
//printf("%d %d\n",*x,*y);
}
void Swap1(int *x,int *y)
{
int *pTemp;
//pTemp的值是一个随机值,也就意味着它指向了一个未知的存储单元
*pTemp=*x;
//向未知的存储单元写入一个数据,这种操作是非法的,也就是说,我们不能借助未初始化的指针变量进行两数互换。
*x=*y;
*y=*pTemp;
printf("%d %d\n",*x,*y);
}
int main()
{
int a=5,b=9;
Swap(&a,&b);
//Swap1(&a,&b);
printf("%d,%d",a,b);
return 0;
}
总之,正确使用字符指针,必须明确字符串被保存到了哪里以及字符指针指向了哪里。