C++ 引用基础

//引用
#include<iostream>

using namespace std;

struct Student{
    char name[30];
    int age;
};

struct Teacher{
    int &at2;
    int &bt2;
};

int GetNum(Student &s2){
    s2.age = 19;
    return s2.age;
}

void main(){
    int a = 10;//编译器分配4个字节的内存,变量名a就是内存空间的的标识

    //引用概念
    //在C++中新增加了引用的概念,C语言中没有引用的概念
    //引用可以看作一个已定义变量的别名
    //引用的语法:Type& name = var;
    //引用做函数参数那?(引用作为函数参数声明时不进行初始化)

    //int &b1;
    //报错 error C2530: “b1”: 必须初始化引用
    //说明:引用定义的时候必须赋初始值

    int &b = a;//b是a的别名  变量b也是a对应内存空间的标识

    //a的三种赋值方式
    a = 11;//①直接赋值
    printf("a=%d\n",a);
    {
        //②间接赋值
        int *p = &a;
        *p = 12;
        printf("a=%d\n", a);
    }
    //③引用赋值
    b = 13;
    printf("a=%d\n", a);

    //结构体引用
    Student s1;
    s1.age = 12;
    //定义s1的引用
    Student &s2 = s1;
    s2.age = 17;
    //直接引用
    printf("直接引用--学生的年龄是%d\n", s1.age);
    //间接引用
    printf("间接引用--学生的年龄是%d\n", GetNum(s1));

    //引用的本质
    printf("结构体Teacher的大小是%d\n", sizeof(Teacher));//打印8
    //说明 int &bt2;  占据4个字节大小的内存空间

    //引用的本质
    //1)引用在C++中的内部实现是一个常指针
    //Type& name <-->  Type* const name
    //2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
    //3)从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏
    system("pause");
}
时间: 2024-10-07 13:44:33

C++ 引用基础的相关文章

详解JAVA8Stream 方法引用(基础){全}

1: Stream流 1.1 引言 1.2 流式思想概述 1.3 获取流 1.4 常用方法 1.5 练习:集合元素处理 2:方法引用 2.1 冗余的Lambda场景 2.2 方法引用符 2.3 通过对象名引用成员方法 2.4 通过类名称引用静态方法 2.5 通过super引用成员方法 2.6 通过this引用成员方法 2.7 类的构造器引用 2.8 数组的构造器引用 主要内容: 1: Stream流 1.1: Filter 1.2: Map 1.3: limit 1.4: skip 2: 方法引

C++基础2 引用 函数扩展: 默认值 占位符 指针 重载 类:引用类指针 声明实现分开写

[难点]指针引用 [email protected]:~/c++$ cat main.cpp  #include <stdlib.h> #include "iostream" using namespace std; int a = 20; struct Teacher { int age; char name[64]; }; int fun1(struct Teacher ** p) { int ret = 0; if(p == NULL) { ret = -1; ret

转载8天学通MongoDB——第一天 基础入门

关于MongoDB的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中"集合" 就是对应关系数据库中的"表","文档"对应"行". 一: 下载 上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了,不过这里有两点注意: ①:根据业界规则,偶数为"稳定版"(如:1.6.X,1.8.X),奇数为"开发版"(如:1.7.X

.netER的未来路,关于基础是否重要和应该自己手写代码吗?

http://www.cnblogs.com/onepiece_wang/p/5558341.html#!comments 引用"基础知识的学习,一开始可能是背书,但是在后续若干年的工作过程中,在写代码时有没有想过为什么代码要写成这样子." 谁没有去想过呢?我深究过,但后来放弃了,原因很简单,因为我深究后发现,1+1等于2 苹果就是叫苹果.我去思考1+1为什么等于2 苹果为什么叫苹果.研究透后才发现只是多此一举,很浪费时间也没有实质性的作用.因为他就叫那个苹果名字,1+1就是等于2,我

c++学习(2.3)引用

复合类型是指基于其他类型定义的类型. c++语言有几种复合类型, 这里将介绍其中的两种:引用和指针. 引用 · · · · 基础引用 在c++11版本中引入了"右值引用", 关于这个我们在这里先不讲解. 这种引用主要作用于内置类型. 严格的来说, 我们使用术语"引用"的时候, 默认的就是左值引用. 引用就像是为对象起了另外一个名字, 引用类型引用另外一种类型. 我们通过将声明写成&d的形式来定义引用, 其中d是声明的变量名: int ival = 1024;

Excel应该这么玩——5、三种数据:Excel也是系统

Excel最常用的功能就是记录数据,把数据按照行列记录下来.这部分数据是源数据,是业务活动中最原始的流水账,作为后续操作的依据.为了从源数据中得出一定的结论,需要对源数据进行分析得出报表数据.在分析数据的过程中,除了用到根据实际情况变化的源数据,还存在不变的数据,例如各种比例.基数.基础信息,这里把这一类数据叫做基础数据.其实在业务系统中的数据也可以按这三种数据分类,只不过业务系统能提供友好的用户界面,Excel则完全面向数据.虽然Excel在用户界面上没法和业务系统相比,但对于数据的分类和处理

\upload\install\includes\auto_init.php源码分析

1 <?php 2 3 /** 4 * ECSHOP 首页文件 5 * ============================================================================ 6 * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利. 7 * 网站地址: http://www.ecshop.com: 8 * ---------------------------------------------------------

后台任务利器之Hangfire

后台任务利器之Hangfire 一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的DI管理着生命周期,免去了在NF4.X环境中配置always running的麻烦,真正做到开箱即用. 二.安装 Hangfie官方支持是MsSql和redis,除此之外,可供选择的还有PostgreSql和Mongo.在应用入口项目需要引用Hangfire.AspNetCore和特定持久库,比如使用了MsSql数据库的Hangfi

分享一个最近在使用的响应式css框架 Pure

响应式,就是根据浏览器或不同设备屏幕大小自适应内容. 第一次查响应式呢,了解到是要在head里写判断浏览器宽度之类的东西,也要设置对IE低版本兼容. 如: <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /><link rel="style