C++ 的引用
来源:互联网 发布:seo关键词优化怎么做 编辑:程序博客网 时间:2024/06/06 02:03
//《变量的引用》
// main.cpp
// Three_C++
//
// Created by 周双建 on 16/3/16.
// Copyright © 2016年周双建. All rights reserved.
/*
第一:
介绍:建立引用的作用是:就是在给一个变量另起一个名字。以便在需要的时候可以方便、间接地应用该变量。
第二:
引用的基本形似:
int a ;
int &b = a;// 声明b是一个整型变量的引用变量,它被初始化为a
第三:
强调:对一个变量的引用的所有操作,实际上都是对其所代表(原来的)变量的操作。
第四:
重点:对变量声明一个引用,并不开辟内存单元。在声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量。
*/
// 引用的简单使用
#include <iostream>
using namespace std;
int main(int argc,const char * argv[]) {
int a = 10;
// 给 a 一个引用
int &b = a ;
// 我们对a 进行操作
a = 250 * a;
// 我们开始,现在对 a和 b 的值进行查看。这里你自己可以猜一下,它们的值。
cout<<"first_a = "<<a <<","<<"first_b = "<<b<<endl ;
// 我们接着对 b 做点事
b = b /5 ;
// 我们在查看一下 a 和 b的值。
cout<<"second_a = "<<a <<","<<"second_b = "<<b<<endl;
//让我们查看一下,它们的地址
cout<<"Adderss_a = "<< &a <<endl<<"Address_b = "<< &b <<endl;
int main_1();
main_1();
int main_2();
main_2();
int main_3();
main_3();
return 0;
}
/*
输出的结果:
first_a = 2500,first_b = 2500
second_a = 500,second_b = 500
Adderss_a = 0x7fff5fbff75c
Address_b = 0x7fff5fbff75c
Program ended with exit code: 0
*/
// 引用的说明
/*
第一:
引用不是一种独立的数据类型,必须与某种类型相联系。
int &b = a ; //正确
int &b ; // 错误
float a ; int &b = a ;// 错误
第二:
引用与其代表的变量共享同一内存单元,系统不会另外为引用开辟空间。
上面程序,a和 b 的地址,相同:如下
Adderss_a = 0x7fff5fbff75c
Address_b = 0x7fff5fbff75c
第三:
怎么区分是引用还是取地址呢?
当 &a的前面有类型时,它必定是引用。
如果前面没有类型,此时就是取地址。
第四:
对引用的初始化,可以用一个变量名,也可以用另一个引用。
int a = 3 ;
int &b = a ;
int &c = b ;
第五:
引用在初始化后不能在被从新声明为另一个变量的别名。
int a = 3 , b = 4;
int &c = a ;
c = &b ; // 错误
int &c = b ;// 错误
*/
/********小******试******牛*******刀***********/
#include <iostream>
using namespace std;
void zsj_Swap (int a ,int b){
int temp ;
temp = a ;
a = b;
b = temp;
}
int main_1(){
int j = 2 , s =23 ;
zsj_Swap(j, s);
// 我们可以猜测一下,j 和 s的值
cout<< "j = "<< j <<endl<<"s = "<<s <<endl;
return 0 ;
}
/*
输入结果:
j = 2
s = 23
Program ended with exit code: 0
从结果上,我们看到没有成功。为什么呢?
// 变量的作用域,有关。
*/
// 下面,我们要使用,指针,来进行运算
#include<iostream>
using namespace std;
void Swap ( int * a ,int * b){
int temp ;
temp = *a ;
*a = *b ;
*b = temp;
}
int main_2 (){
int j = 2 , s =5 ;
Swap(&j, &s);
// 我们在看看 j 和 s的值
cout<< "*p_j = " << j <<endl << "*p_s = "<< s <<endl;
return 0;
}
/*
输出的结果:
*p_j = 5
*p_s = 2
Program ended with exit code: 0
// 我们从输出结果上看到,我们交换成功。这种方法是“值传递”方式,向一个指针变量传送一个地址。然后再通过指针变量访问变量。
*/
// 下面,我们在使用引用
#include <iostream>
using namespace std;
void K_Swap (int &a ,int &b){// 你看到这里,你有没有什么想法???
int temp;
temp = a;
a = b;
b = temp;
}
int main_3(){
int j = 3 ,s =2;
K_Swap(j, s);
// 我猜一下,结果
cout<<"K_j = "<<j <<endl<<"K_s = "<<s <<endl;
return 0;
}
/*
输出结果:
K_j = 2
K_s = 3
Program ended with exit code: 0
我们看到也是成功的。这叫传递变量的别名。
*/
- C++“引用”的理解
- [C++] 引用和指向指针的引用
- 关于C++引用C,C引用C++,extern的使用
- 引用 Invoke的用法(C#)
- [C] 指针参数的引用
- c/c++指针的引用
- c的指针*和引用&
- 【C++】指针&引用的区别
- [C/C++]数组的引用、多维数组
- 引用的本质是什么(c++,c#,java)?
- 【C/C++】引用和指针的区别
- 【C/C++】指针与引用的区别
- [C++]关于数组的引用和引用的数组
- C变量的直接引用与间接引用区别
- 引用-利用引用交换两个变量的值【C++】
- 引用(c++)
- C++----引用
- c++-引用
- EF模式下数据库的表一定要设置主键
- 关于java.net.UnknownHostException: Unable to resolve host "xx": No address associated with hostname
- Shell脚本编程学习笔记
- com编程快速入门
- Xcode 断点调试获取值为nil的问题
- C++ 的引用
- Cocoapods Undefined symbols for architecture armv7s\arm64\x86_64
- 编写shell脚本unload表格里的内容到指定文件里
- 两台Linux的通信(文件传输)
- Markup类 xml文件操作
- LintCode 138. 子数组之和
- 【微信第三方平台】授权实现及所使用的框架解析
- ArcGIS API for JavaScript开发教程系列(一)之创建地图
- mysql数据库的基本操作语句