指针变量的引用

定义:若一个变量声明为T&,既引用时必须是T类型的变量或对象,或者能转换成T类型的对象进行初始话。

所以,一般地,引用的对象都是变量。

/*指针变量的引用*/
	int *a;       //声明指针变量,a是一个指向int地址 
	int* &p=a;    //正确,指针变量也是变量,p作为a的别名,改变p指向的值等同于对a进行相同处理 
	int b=8;
	p=&b;         //此时 p &b a 表示同一地址 
	
	
/*引用的指针*/
	int a;
	int& ra=a;         //正确
	int& *p=&ra; 		//error	依据定义,引用必须是T类型的对象或变量,而此处试图引用地址,即引用的指针。 

注意了,引用本身不是一种数据类型!它单单作为所引用对象的别名进行使用,所以引用本身不能再被引用。

int& *p=&ra ra已经作为a的引用,而该命令试图声明引用ra的地址。

#include    //   输入输出流的头文件
using namespace std;


int main()
{
	int a = 100;

	int* p = &a;

	int* &k = p;

	*k = 123;

	cout << a << endl;


	system("pause");
	return 0;
}


#include    //   输入输出流的头文件
using namespace std;

struct Node
{
	int nValua;
	Node* pNext;
};

void Push_Front(Node* &pTempHead,Node* &pTempEnd,int nValue)
{
	//  创建一个节点 初始化
	Node* pNode = new Node;
	pNode->nValua = nValue;
	pNode->pNext = 0;

	//  在头添加
	pNode->pNext = pTempHead;
	pTempHead = pNode;
}

void Show(Node* pTemp)
{
	while(pTemp)
	{
		cout << pTemp->nValua << " ";
		pTemp = pTemp->pNext;
	}
}

int main()
{

	Node* pHead = 0;
	Node* pEnd = 0;

	Push_Front(pHead,pEnd,100);
	Push_Front(pHead,pEnd,200);
	Push_Front(pHead,pEnd,300);

	Show(pHead);

	system("pause");
	return 0;
}



 
 
 

你可能感兴趣的:(c++)