指针和引用
2015-07-22 14:46
197 查看
举例:
test(int number1, int &number2){
第一个参数: 是普通的指针
第二个参数: 是一个指向指针的引用.
调用时,第一个参数传递参数地址就行,而第二个参数则需要传递一个指针变量给它
调用方法:
指向指针的引用是某一指针的别名,同变量的引用一样。引用绝对不是单独存在的,它一定是指示某个已经存在的东西的,它一定是某个已经存在的物体的”别名”.
如果被初始化赋值成某个变量后,它就始终是这个变量的替身.对引用的改变就是对这个变量的改变.
(1)指向指针的引用,不仅改变了指针所指的对象,也改变了指针本身。
代码举例: 文件后缀是.cpp如果是.c 编译通不过
结果:
(2)指向指针的引用,可以实现对传递给形参的实参数值的交换。即指向指针的引用可以修改指针的值,在参数传递时是传址。
举例:
结果:
原文: /article/2145608.html
test(int number1, int &number2){
第一个参数: 是普通的指针
第二个参数: 是一个指向指针的引用.
调用时,第一个参数传递参数地址就行,而第二个参数则需要传递一个指针变量给它
调用方法:
[code]int num1 = 123; int *num2 = 2342; test(&num1, num2);
指向指针的引用是某一指针的别名,同变量的引用一样。引用绝对不是单独存在的,它一定是指示某个已经存在的东西的,它一定是某个已经存在的物体的”别名”.
如果被初始化赋值成某个变量后,它就始终是这个变量的替身.对引用的改变就是对这个变量的改变.
(1)指向指针的引用,不仅改变了指针所指的对象,也改变了指针本身。
代码举例: 文件后缀是.cpp如果是.c 编译通不过
[code]#include<stdio.h> //引用 void quote(){ int a= 1; int b = 2; int *temp = &a; int *&p = temp; p = &b; *p = 5; printf("\n 引用 \n a is: %d \n b is: %d \n *temp is: %d\n *p is: %d\n", a, b, *temp, *p); } //指针 void pointer(){ int a= 1; int b = 2; int *temp = &a; int *p = temp; p = &b; *p = 5; printf("\n 指针 \n a is: %d \n b is: %d \n *temp is: %d\n *p is: %d\n", a, b, *temp, *p); } int main(void){ pointer(); quote(); return 0; }
结果:
(2)指向指针的引用,可以实现对传递给形参的实参数值的交换。即指向指针的引用可以修改指针的值,在参数传递时是传址。
举例:
[code]#include<iostream> using namespace std; void ptrswap2(int *&v1,int *&v2)//指向指针的引用是某一指针的别名,同变量的引用一样,可以实现对传递给形参的实参数值的交换 { int *temp=v2;//指针别名,当然以指针的形式来应用 v2=v1; v1=temp; } void ptrswap1(int *v1,int *v2)//利用指针进行数值交换,改变的只是形参的指向,实参的值保持不变; { int *temp=v1; v2=v1; v1=v2; } int main(){ int i=10; int j=20; int *pi=&i; int *pj=&j; cout<<"before swap using pointer as parameter: pi="<<*pi<<" pj="<<*pj<<endl; ptrswap1(pi,pj); cout<<"after swap using pointer as parameter, the value that pointer points to don't change"<<endl<<":: pi="<<*pi<<" pj="<<*pj<<endl; int i2=10; int j2=20; int *pi2=&i2; int *pj2=&j2; cout<<"before swap using Reference of pointer as parameter:: pi2="<<*pi2<<" pj2="<<*pj2<<endl; ptrswap2(pi2,pj2); cout<<"after swap, the value that pointer points to changed: pi2="<<*pi2<<" pj2="<<*pj2<<endl; return 0; }
结果:
原文: /article/2145608.html
相关文章推荐
- postgres formencode.api.Invalid
- 内存回收
- express4.x Request对象获得参数方法
- Android笔记:代码规范(新浪微博sdk示例工程附带的说明)
- [LeetCode]Symmetric Tree
- 再高学历也没用,老板的性格就决定了他公司的命运
- 站点的验收标准
- root用户不能修改iptables
- Python GUI 编程 工具
- Android Studio使用技巧系列教程(四)
- MyEclipse中配置Weblogic
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- app启动的完整过程
- Not so Mobile (针对递归输入的函数)
- spring验证事务的代码,用到了mockito
- Objective-C中应用断言_assert()
- 五种常见的 PHP 设计模式
- Android Studio使用技巧系列教程(三)
- ARMCC和GCC编译ARM代码的软浮点和硬浮点问题
- &>/dev/null