ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++引用与指针

2022-05-08 20:02:01  阅读:149  来源: 互联网

标签:cout int C++ 引用 vals ref 指针


引用与指针之间的区别:

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

using namespace std;

int main()
{
   

    int a = 10;
    float b = 21.2;

    int &r_a = a;
    float &r_b = b;

    cout << "a : " << a << endl;
    cout << "a的引用 : " << r_a << endl;
    cout << "b : " << b << endl;
    cout << "b的引用 : " << r_b << endl;


    return 0;
}

输出结果:

a : 10      
a的引用 : 10
b : 21.2
b的引用 : 21.2

将引用作为函数参数:

#include <iostream>

using namespace std;

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

int main()
{
    int a,b;
    cin >> a >> b;

    cout << "交换前 a :" << a << endl;
    cout << "交换前 b :" << b << endl;
    Swap(a,b);

    cout << "交换后 a :" << a << endl;
    cout << "交换后 b :" << b << endl;

    return 0;
}

输出结果:

100
200
交换前 a :100
交换前 b :200
交换后 a :200
交换后 b :100

引用作为函数返回值,可以作为左值

#include <iostream>
 
using namespace std;
 
double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};
 
double& setValues(int i) {  
   double& ref = vals[i];    
   return ref;   // 返回第 i 个元素的引用,ref 是一个引用变量,ref 引用 vals[i]
 
 
}
 
// 要调用上面定义函数的主函数
int main ()
{
 
   cout << "改变前的值" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "vals[" << i << "] = ";
       cout << vals[i] << endl;
   }
    
   setValues(1) = 20.23; // 改变第 2 个元素
   setValues(3) = 70.8;  // 改变第 4 个元素
 
   cout << "改变后的值" << endl;
   for ( int i = 0; i < 5; i++ )
   {
       cout << "vals[" << i << "] = ";
       cout << vals[i] << endl;
   }
   return 0;
}

输出结果:

改变前的值
vals[0] = 10.1
vals[1] = 12.6
vals[2] = 33.1
vals[3] = 24.1
vals[4] = 50
改变后的值
vals[0] = 10.1
vals[1] = 20.23
vals[2] = 33.1
vals[3] = 70.8
vals[4] = 50

 

标签:cout,int,C++,引用,vals,ref,指针
来源: https://www.cnblogs.com/boost/p/16246615.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有