指针引用&可以替代二级指针
使用简单可以重新被赋值
示例
一级指针实现赋值
#include <iostream>
using namespace std
;
int m_value
= 1;
void func(int * p
, int dest
)
{
m_value
= dest
;
*p
= m_value
;
}
int main(int argc
, char *argv
[]) {
int n
= 2;
int *pn
= &n
;
cout
<< *pn
<< endl
;
func(pn
, 77);
cout
<< *pn
<<endl
;
m_value
= 88;
cout
<< *pn
<<endl
;
}
二级指针实现赋值
#include <iostream>
using namespace std
;
int m_value
= 1;
void func(int ** p
, int dest
)
{
m_value
= dest
;
*p
= &m_value
;
}
int main(int argc
, char *argv
[]) {
int n
= 2;
int *pn
= &n
;
cout
<< *pn
<< endl
;
func(&pn
, 77);
cout
<< *pn
<<endl
;
m_value
= 88;
cout
<< *pn
<<endl
;
}
指针引用实现
#include <iostream>
using namespace std
;
int m_value
= 1;
void func(int *& p
, int dest
)
{
m_value
= dest
;
p
= &m_value
;
}
int main(int argc
, char *argv
[]) {
int n
= 2;
int *pn
= &n
;
cout
<< *pn
<< endl
;
func(pn
, 77);
cout
<< *pn
<<endl
;
m_value
= 88;
cout
<< *pn
<<endl
;
}
关于指针引用个人理解,&a=b,是a对b的引用,a和b指向的是同一块地址,对于指针*&a=b,是指针*a对*b的引用,二者指向同一块内存,在函数中a和b是等价的
转载请注明原文地址:https://blackberry.8miu.com/read-749.html