C++ 指针和引用

C++指针与C语言的用法一样。

/**
C++引用,指针

*/
#include<iostream>
using namespace std;
int main()
{
    int array[]={1,2,3,4,5,6,7,8};
    int length=sizeof(array)/sizeof(array[0]);
    int *p=array;
    while(p<=&array[length-1])//地址之间的比较
    {
        cout<<*p<<" ";
        p++;
    }
    cout<<endl;

    p=array;
    for(int i=0;i<length;i++)
    {
        cout<<*p<<" ";
        p++;
    }
    cout<<endl;
    return 0;
}
结果:

1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
C++引用:

引用是变量的别名,对引用的操作等同于对变量的操作。使用引用可以方便的在函数里面修改函数外面的变量。

/**
C++引用:
C++之所以增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能。

C++ 函数传参:

(1)将变量名作为实参和形参。这时传给形参的是变量的值,传递是单向的。
    如果在执行函数期间形参的值发生变化,并不传回给实参。
    因为在调用函数时,形参和实参不是同一个存储单元。// 同 c

(2) 传递变量的指针。形参是指针变量,实参是一个变量的地址,
        调用函数时,形参(指针变量)指向实参变量单元。
        这种通过形参指针可以改变实参的值。// 同 c

(3) C++提供了 传递变量的引用。
    形参是引用变量,和实参是一个变量,调用函数时,
        形参(引用变量)指向实参变量单元。这种通过形参引用可以改变实参的值。
*/
/*
引用很容易与指针混淆,它们之间有三个主要的不同:

    不存在空引用。引用必须连接到一块合法的内存。
    一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
    引用必须在创建时被初始化。指针可以在任何时间被初始化。

不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名
*/
#include<iostream>
using namespace std;
void swap(int& x,int& y)
{
    x^=y;
    y^=x;
    x^=y;
}
void swap(int *x,int* y)//使用指针来交换
{
    *x^=*y;
    *y^=*x;
    *x^=*y;
}
int main()
{
    int a=10,b=9;
    cout<<"a="<<a<<" b="<<b<<endl;
    swap(a,b);
    cout<<"a="<<a<<" b="<<b<<endl;
    swap(&a,&b);
    cout<<"a="<<a<<" b="<<b<<endl;
//    int& r;//错误引用必须在声明的时候初始化
//    error: 'r' declared as reference but not initialized|
//    int& r1=NULL;//错误,没有空的引用
    int& r2=a;
    cout<<"r2="<<r2<<endl;
    r2=20;//
    cout<<"r2="<<r2<<endl;
    cout<<"a="<<a<<endl;//对应用的操作就是对变量本身的操作
//    如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。
    const int& r3=a;
//    r3=30;//常引用不能对变量进行修改,达到了应用的安全性。
//error: assignment of read-only reference 'r3'|
    cout<<"r3="<<r3<<endl;
    return 0;
}
结果:

a=10 b=9
a=9 b=10
a=10 b=9
r2=10
r2=20
a=20
r3=20


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值