如果修改指针的指向,而非指针所指向的内存空间的内容?
先看看下面这段代码
void
f1(
int
*
ip) { ip
=
new
int
(
10
); }
如果传入一个int* 指针,比如这样
int
*
p; f1(p);
实际上执行的是一个pass-by-value(传值)操作,p的指向没有发生改变。
解决这个问题有2法:用指针的指针作为参数(a pointer to a pointer),或者一个指针引用作为参数(pointer references)。
void
f2(
int
**
ipp)
{ *ipp = new int(10); //改变指针的指向 **ipp = 10; //改变了指针指向的空间的内容 }
void
f3(
int
*&
irp) { irp
=
new
int
(
10
);
//
改变指针的指向
*
irp
=
10
;
//
改变了指针指向的空间的内容
}
可见指针引用的用法要比指针的指针少一个*号