在C中,有指针和指针引用,它们的区别在是什么?
首先,指针是一个起路牌作用的地址,它本身要占用内存(有自己的内存地址),在这个地址中保存的是另外一个同类变量的内存地址,因此,可以通过对指针的间接操作来改变另外一个变量的值.
引用是依附于另外一个变量的"寄生虫",它本身没有内存地址,也可以通过改变应用变量的操作来修改被引用变量的值.例如:
int k=10,*p=&k;
int &m=k;
cout<<"&k="<<&k<<endl;
cout<<"p="<<p<<endl;
cout<<"&m"<<&m<<endl;
cout<<"&p="<<&p<<endl;
则,打印的结果为:
&k=0x0012FF6C
p=0x0012FF6C
&m=0x0012FF6C
&p=0x0012FF68
而指针引用,则是改变指针变量的值(即所保存内存地址的值).比如方法:
void Point(Node *obj)
{
obj->SetScore(10.0f);
}
void PointRef(Node *&obj)
{
obj=new Node(100,100);
}
前一个是通过间接操作来改变远对象的值,而后一方法是重新为该指针分配内存地址,所以必须为指针的引用.
在C#中,指针为对象,指针的引用为参数前面加 ref 关键字.