定义:若一个变量声明为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 <iostream> // 输入输出流的头文件
using namespace std;
int main()
{
int a = 100;
int* p = &a;
int* &k = p;
*k = 123;
cout << a << endl;
system("pause");
return 0;
}
#include <iostream> // 输入输出流的头文件
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;
}
版权声明:本文为weixin_44656803原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。