值传递、地址传递和引用型

914阅读 0评论2009-12-29 gnometerminal
分类:C/C++

(1)值传递只改变形参的值,以swap()为例,i和j 的值没有交换。
 

void swap(int a, int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

int i = 3, j = 4;
swap(i, j);

(2)地址传递(指针传递),i,j值交换了

void swap(int *a, int *b)
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
}
int i = 3, j = 4;
swap(&i, &j);

(3)变量的引用,i,j的值也交换了,引用的主要用途是修饰函数的形参和返回值。对比(1)和(3),引用的写法像值传递,但却有指针传递的功能。

void swap(int &a, int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}
int i = 3, j = 4;
swap(i, j);


上一篇:(转)对ARM8位位图的学习总结
下一篇:strcpy 和 strlen 的实现