指针和指针的引用作为参数——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依然是传递进来的数值 }
*& 指针本身可变;
* 指针本身不变,仅指向的内容可变。
相关文章推荐
- 回文判断 移动圆桌 同时在线时间聊天
- C语言_删除相同的字符(华为笔试题)
- 黑马程序员之--C语言学习笔记之变量、常量和注释
- C++11(及现代C++风格)和快速迭代式开发
- AVL树,红黑树,B树,B+树,Trie树应用场景简介
- 【C语言】reverse_string(char * string)(递归)
- c++设计模式-----Facade外观模式
- NOIP2010-普及组初赛C语言解析
- C++ Template
- C++类中静态变量和静态方法使用介绍
- Effective C++——条款46(第7章)
- 把《Effective C++》读薄
- 把《Effective C++》读薄
- 设计模式C++达到 1.辛格尔顿
- C++利用模板实现一个队列
- C++ 空类默认产生的类成员函数
- C++多态性——函数的覆盖和隐藏
- Effective C++:条款14:在中小企业资源管理copying表现
- C++ Studio (二) ----- atoi()函数的实现 (自己编写功能)
- C++ Studio( 一 ) ----------- <stdlib.h> atoi() --------- 将string转换为int型