文档章节

C++_引用机制

渣渣技术狗
 渣渣技术狗
发布于 2015/09/16 14:40
字数 361
阅读 61
收藏 0

1.引用的内涵

 引用就是给变量取外号而已

2.四种不能使用引用的情况
void &r=x; //不能建立void类型引用
int &&r=x; //不能建立引用的引用
int &*p=x; //不能建立指向引用的指针
int &ra[10]=a; //不能建立引用的数组

总结:引用一有三无,有类型,无引用,无指针,无数组

3.引用的最基本用法

CODE:


#include<iostream>
using namespace std;
int x=5,y=10;
int &r=x;
void print()
{
    cout<<"x="<<x<<" y=<<y<<" r="<<endl;
    cout<<"Address of x "<<&x<<endl;
    cout<<"Address of y "<<&y<<endl;
    cout<<"Address of z "<<&z<<endl;
}
int main()
{
    print();
    r=y;
    
    y=100;
    print();
    x=200;
    print();
    return 0;
}



RESULT:


x=5 y=10 r=5
Address of x 00474DD0
Address of y 00474DD4
Address of r 00474DD0
x=10 y=100 r=10
Address of x 00474DD0
Address of y 00474DD4
Address of r 00474DD0
x=200 y=100 r=200
Address of x 00474DD0
Address of y 00474DD4
Address of r 00474DD0

总结:修改作用,引用==原变量

4.引用作为形参

引用作形参,系统不为其另分配内存空间,与原变量公用内存空间。

调用函数才初始化。

CODE:


#include <iostream>
using namespace std;
void swap(int &x,int &y)
{
    int t=x;
    x=y;
    y=t;
}
int main()
{
    int a=3,b=5,c=10,d=20;
    cout<<"a="<<a<<" b="<<b<<endl;
    swap(a,b);
    cout<<"a="<<a<<" b="<<b<<endl;
    cout<<"c="<<c<<" d="<<d<<endl;
    swap(c,d);
    cout<<"c="<<c<<" d="<<d<<endl;
    return 0;
}

RESULT:

a=3 b=5
a=5 b=3
c=10 d=20
c=20 d=10




© 著作权归作者所有

渣渣技术狗
粉丝 6
博文 6
码字总数 2759
作品 0
石景山
程序员
私信 提问
C++中extern “C”含义深层探索

首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。 通常,在模块的头文件中对本模块提供...

Jerikc
2014/04/24
126
1
C++中extern “C”含义深层探索

1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言...

长平狐
2013/01/06
105
0
C++ 对象资源管理惯用法

原文:C++ 对象资源管理惯用法 作者:Breaker 关于 C++ 对象资源管理的惯用法,note-to-self + keynote + idiom case + cross-reference 式笔记 keyword: RAII, deleter, Two-stage Initiali...

晨曦之光
2012/05/23
182
0
extern "C"的用法解析

extern "C"的用法解析 http://blog.sina.com.cn/u/494a1ebc010004g5 C++中extern “C”含义深层探索 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和...

西昆仑
2011/12/23
273
0
C语言编程新手入门基础学习:使用函数必须知道的3点注意事项

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部