小谈指针和引用

指针

一、概念

1、“指针”是指地址,是常量,“指针变量”是指取值为地址的变量

     变量的指针就是变量的地址。存放变量地址的变量是指针变量。

二、理解

1、i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量

i=3;

i_pointer=&i; 

 

 2、调用函数

swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
main()
{
int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a;pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);

 

注意:

1、swap(int *p1,int *p2)
{int *temp;
*temp=*p1; /*此语句有问题,未对temp赋值,即temp的值不可预见*/
*p1=*p2;
*p2=temp;
}

2、swap(int x,int y)/*只是交换了形参的值,实参并没改变,单向值传递性*/
{int temp;
temp=x;
x=y;
y=temp;
}

3、swap(int *p1,int *p2)
{int *p;
p=p1;/*调用函数时不会改变实参指针变量的值,但可以改变实参指针变量所指向变量的值*/
p1=p2;
p2=p;
}

 

 

引用

一、概念

1、int a;

int &b=a;

b是a的引用,即b是a的别名

 二、理解

1、使变量b具有变量a的地址,相当于b不需要另开辟内存单元,a和b有同一地址;改变时也当然是同步的。

2、这里同样就swap函数讨论:C++的引用型作为函数的形参,弥补了值传递的不足 

swap(int &p1,int &p2)/*这里p1、p2相当于交换了值,由于分别是a、b的别名,则a、b也同步跟着改变*/
{int temp;
temp=p1;
p1=p2;
p2=temp;
}
main()
{
int a,b;
scanf("%d,%d",&a,&b);
if(a<b) swap(a,b);
printf("\n%d,%d\n",a,b);

posted on 2012-10-22 22:46  即为将军  阅读(293)  评论(0编辑  收藏  举报

导航