利用引用交换俩指针的指向关系
#include "stdafx.h"
#include <iostream>
using namespace std;
#if 0
可以通过一级指针修改0级指针的内容,可以通过二级指针修改
一级指针的指向,可以通过N级指针修改N-1级指针的指向
void Swap(char* x,char* y)
{
char* t = x;
x = y;
y = t;
}
这个方法并不能改变原有指针的指向关系,相当于在栈上新开
辟俩个空间x y 存放着字符串的指针,也就是指向俩个字符串
通过相互赋值改变的只是 新开辟空间的指向,而在调用结束后
空间就会销毁,并没有回传给原指针,所以改变不了原指针的
指向关系
void Swap(char** x, char** y)
{
char* t = *x;
*x = *y;
*y = t;
}
利用二级指针(升*)的方法,也就是在栈上新开辟俩个空间,存放
着字符串指针的地址,它们也就是字符串的指针的指针,指向的是
俩个指针,所以改变其内容就是直接改变原指针中的内容,实现了
更改指向关系
#endif
void Swap(char* &x, char* &y)//指针的引用 此引用为指针类型
{
char* t = x;
x = y;
y = t;
}
//传引用相当于直接对原指针进行操作 所以直接进行交换即可
//相当于扩展到main函数 扩展了其作用域
int _tmain(int argc, _TCHAR* argv[])
{
int a;
int &ra = a;
int* p;
int* &rp = p; //指针的引用(别名)
char* pstr = "china";
char* qstr = "america";
cout << "pstr= " << pstr << endl;
cout << "qstr= " << qstr << endl;
//相当于printf中%s 打印地址
//Swap(&pstr, &qstr);//传指针的地址
Swap(pstr, qstr); //传指针的引用
cout << "pstr= " << pstr << endl;
cout << "qstr= " << qstr << endl;
return 0;
}