您的位置:首页 > 编程语言 > C语言/C++

指针和指针的引用作为参数——c++

2015-09-19 21:57 381 查看

指针和指针的引用作为参数–c++

指针都清楚,存放变量地址的变量。那么指针指向的数据是可以改变,而指针本身是不可以改变的。表示为: *P;

指针的引用, 相当于指针的指针。 作为参数传递时,这样指针的数值是可以改变的 ,表示为: *&P

fun(int * pA); // pA的数值在函数返回后不会变化

fun(int*& pA); // pA的数值在函数返回可能会发生变化,如果fun函数内部对pA赋值的话

指针作为参数传递

e.g

int m_value = 1;
void func(int *p)
{
p = &m_value;//主函数*pn的值不变还是2
*p=1;  //主函数的值变为1
}

int main(int argc, char *argv[])
{
int n = 2;
int *pn = &n;
cout << *pn << endl;
func(pn);
cout << *pn <<endl;
return 0;
}


二级指针作为参数

void func(int **p)
{
*p = &m_value;//实际修改的main()的*pn

// 也可以根据你的需求分配内存
*p = new int;
**p = 5;
}

int main(int argc, char *argv[])
{
int n = 2;
int *pn = &n;
cout << *pn << endl;
func(&pn);
cout << *pn <<endl;
return 0;
}


结果2,5



int m_value = 1;

void func(int *&p)

{

p = &m_value;

// 也可以根据你的需求分配内存
p = new int;
*p = 5;


}

int main(int argc, char *argv[])

{

int n = 2;

int *pn = &n;

cout << *pn << endl;

func(pn);

cout << *pn <

结果为: 2,5
void   InitStack(LNode*   &   HS)
{
HS   =   NULL;     //   函数返回后,   HS就是NULL了
}

void   InitStack(LNode*   HS)
{
HS   =   NULL;     //   函数返回后,   HS依然是传递进来的数值
}


*& 指针本身可变;

* 指针本身不变,仅指向的内容可变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: