C/C++的传指针和引用

来源:互联网 发布:网络综艺为什么这么火 编辑:程序博客网 时间:2024/06/08 05:09

人老了就是会糊涂,记录一下C/C++中传指针和引用 的区别,免得再去找来找去

  • 传指针
#include<stdio.h>void swap(int*a,int*b){    int temp=*a;     *a=*b;     *b=temp;}int main(){    int a=1,b=2;    swap(&a,&b);    printf("a=%d,b=%d",a,b);    return 0;}

这里写图片描述

解析:上述的swap函数是将a和b的地址的副本传进去了,然后再在swap函数中,对a和b的值进行了交换,所以影响了外面main函数中的a和b。如果单纯的传入a和b值的副本,那么其影响范围只限于swap函数内,断不可影响到main函数中去。

  • 引用
#include<cstdio>using namespace std;void swap(int&a,int&b){    int temp=a;    a=b;    b=temp;}int main(){    int A=1,B=2;    swap(A,B);    printf("a=%d,b=%d",A,B);    return 0;}

这里写图片描述

解析:上述是典型的C++的引用的用法,在swap函数中,swap(int &a,int &b),添加&是给实参添加一个别名,即它们指的是同一个值,在main函数中使用的swap(A,B)中的A和B,对于a和b来说分别是A 和B的别名,所以对a和b操作就是对A和B操作,故而能够进行交换。

小结

传指针是C的典型用法,引用是C++的用法,个人而言,指针还是用着更加好理解一点点,传指针就是将地址副本传进去,然后在函数里面对地址代表的值进行操作,倘若仅仅只是对地址操作而不对地址所代表的值操作,那么也是无法影响到外面的值的,这一点需要引起足够的重视。

原创粉丝点击