指针和引用

来源:互联网 发布:淘宝详情页表格制作 编辑:程序博客网 时间:2024/05/05 16:50

举例:
test(int number1, int &number2){

第一个参数: 是普通的指针
第二个参数: 是一个指向指针的引用.

调用时,第一个参数传递参数地址就行,而第二个参数则需要传递一个指针变量给它

调用方法:

int num1 = 123;int *num2 = 2342;test(&num1, num2);

指向指针的引用是某一指针的别名,同变量的引用一样。引用绝对不是单独存在的,它一定是指示某个已经存在的东西的,它一定是某个已经存在的物体的”别名”.
如果被初始化赋值成某个变量后,它就始终是这个变量的替身.对引用的改变就是对这个变量的改变.

(1)指向指针的引用,不仅改变了指针所指的对象,也改变了指针本身。

代码举例: 文件后缀是.cpp如果是.c 编译通不过

#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)指向指针的引用,可以实现对传递给形参的实参数值的交换。即指向指针的引用可以修改指针的值,在参数传递时是传址。

举例:

#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;  }  

结果:
这里写图片描述

原文: http://blog.csdn.net/acs713/article/details/12508049

0 0
原创粉丝点击