C++ 的引用
2016-03-16 11:59
399 查看
//《变量的引用》
// 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
我们看到也是成功的。这叫传递变量的别名。
*/
相关文章推荐
- Python动态类型的学习---引用的理解
- 关于指针的一些事情
- Shell脚本中引用、调用另一个脚本文件的2种方法
- vbs引用另一个vbs的代码
- C# Pointer指针应用实例简述
- C++中引用的使用总结
- C++中引用(&)的用法与应用实例分析
- 关于"引用"的几点说明介绍
- C++智能指针实例详解
- C++指向函数的指针实例解析
- 关于c语言指针的两处小tip分享
- 浅析iterator与指针的区别
- 探讨C++中数组名与指针的用法比较分析
- C++编程指向成员的指针以及this指针的基本使用指南
- 详解C++中的指针、数组指针与函数指针
- C++中字符串以及数组和指针的互相使用讲解
- C语言安全之数组长度与指针实例解析
- C++中指向对象的常指针与指向常对象的指针详解
- 指向变量的常指针与指向常变量的指针详细解析
- C#通过指针实现快速拷贝的方法