1. //引用
  2. #include<iostream>
  3.  
  4. using namespace std;
  5.  
  6. struct Student{
  7. char name[];
  8. int age;
  9. };
  10.  
  11. struct Teacher{
  12. int &at2;
  13. int &bt2;
  14. };
  15.  
  16. int GetNum(Student &s2){
  17. s2.age = ;
  18. return s2.age;
  19. }
  20.  
  21. void main(){
  22. int a = ;//编译器分配4个字节的内存,变量名a就是内存空间的的标识
  23.  
  24. //引用概念
  25. //在C++中新增加了引用的概念,C语言中没有引用的概念
  26. //引用可以看作一个已定义变量的别名
  27. //引用的语法:Type& name = var;
  28. //引用做函数参数那?(引用作为函数参数声明时不进行初始化)
  29.  
  30. //int &b1;
  31. //报错 error C2530: “b1”: 必须初始化引用
  32. //说明:引用定义的时候必须赋初始值
  33.  
  34. int &b = a;//b是a的别名 变量b也是a对应内存空间的标识
  35.  
  36. //a的三种赋值方式
  37. a = ;//①直接赋值
  38. printf("a=%d\n",a);
  39. {
  40. //②间接赋值
  41. int *p = &a;
  42. *p = ;
  43. printf("a=%d\n", a);
  44. }
  45. //③引用赋值
  46. b = ;
  47. printf("a=%d\n", a);
  48.  
  49. //结构体引用
  50. Student s1;
  51. s1.age = ;
  52. //定义s1的引用
  53. Student &s2 = s1;
  54. s2.age = ;
  55. //直接引用
  56. printf("直接引用--学生的年龄是%d\n", s1.age);
  57. //间接引用
  58. printf("间接引用--学生的年龄是%d\n", GetNum(s1));
  59.  
  60. //引用的本质
  61. printf("结构体Teacher的大小是%d\n", sizeof(Teacher));//打印8
  62. //说明 int &bt2; 占据4个字节大小的内存空间
  63.  
  64. //引用的本质
  65. //1)引用在C++中的内部实现是一个常指针
  66. //Type& name <--> Type* const name
  67. //2)C++编译器在编译过程中使用常指针作为引用的内部实现,因此引用所占用的空间大小与指针相同。
  68. //3)从使用的角度,引用会让人误会其只是一个别名,没有自己的存储空间。这是C++为了实用性而做出的细节隐藏
  69. system("pause");
  70. }

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

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

    1: Stream流 1.1 引言 1.2 流式思想概述 1.3 获取流 1.4 常用方法 1.5 练习:集合元素处理 2:方法引用 2.1 冗余的Lambda场景 2.2 方法引用符 2.3 通过对 ...

  2. SpringBoot整合freemarker 引用基础

    原 ElasticSearch学习笔记Ⅲ - SpringBoot整合ES 新建一个SpringBoot项目.添加es的maven坐标如下: <dependency> <groupI ...

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

    http://www.cnblogs.com/onepiece_wang/p/5558341.html#!comments 引用"基础知识的学习,一开始可能是背书,但是在后续若干年的工作过程 ...

  4. Android多Module下的Application引用方式

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 Android开发时,Application一般都放在APP中,Lib模块如果想引用Application则需要在APP中进行传递, ...

  5. Puzzle 面向服务/切面(AOP/IOC)开发框架 For .Net

    Puzzle 面向服务/切面AOP开发框架 For .Net AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效 ...

  6. jQuery treetable【表格多重折叠树功能及拖放表格子元素重新排列】

    今天有个表格需求做到多重折叠子元素功能,仔细想了下实现原理, 1.在html中,把父子节点的关系写在自定义属性,但对于节点是否有孩子(hasChild),是否是最后一个节点(isLastOne),是否 ...

  7. MySQL生成模型

    根据数据库表生成Model using System; using System.Collections.Generic; using System.Data; using System.Text; ...

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

        Excel最常用的功能就是记录数据,把数据按照行列记录下来.这部分数据是源数据,是业务活动中最原始的流水账,作为后续操作的依据.为了从源数据中得出一定的结论,需要对源数据进行分析得出报表数据. ...

  9. 循序渐进Python3(十二) --2--  web框架之django简单实现oracle数据库操作

    在 Django 中构建 Oracle 数据库支持的 Web 应用程序 了解如何配置 Django 以便与 Oracle 数据库交互,并使用 ORM 进行数据库连接.             产能在软 ...

随机推荐

  1. uitabbar 标题设置 button text attributes only respected for UIControlStateNormal

    uitabbar 标题设置 button text attributes only respected for UIControlStateNormal [[UITabBarItem appearan ...

  2. 推送未找到应用程序的“aps-environment”的权利字符串错误

    一:使用百度推送,或是苹果自带的推送出,才配置好anps-cer文件之后,出现错误 推送未找到应用程序的“aps-environment”的权利字符串错误 二:错误原因: 此原因是配置好推送证书之后, ...

  3. 算法笔记_134:字符串编辑距离(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 给定一个源串和目标串,能够进行如下操作: 在任意位置上插入一个字符: 替换掉任意字符: 删除任意字符. 写一个程序,实现返回最小操作次数,使得对源串 ...

  4. mysql数据库创建删除带横杠的数据库名

    mysql> create database d-d; ERROR 1064 (42000): You have an error in your SQL syntax; check the m ...

  5. IOS+openCV在Xcode的入门开发(转)

    看这篇文章之前先看看这个地址:OpenCV iOS开发(一)——安装 昨天折腾了一天,终于搞定了openCV+IOS在Xcode下的环境并且实现一个基于霍夫算法的圆形识别程序.废话不多说,下面就是具体 ...

  6. Redis总结(二)C#中如何使用redis(转载)

    上一篇讲述了安装redis<Redis总结(一)Redis安装>,同时也大致介绍了redis的优势和应用场景.本篇着重讲解.NET中如何使用redis和C#. Redis官网提供了很多开源 ...

  7. [C/C++11语法]_[0基础]_[lamba 表达式介绍]

    场景 lambda 表达式在非常多语言里都有一席之地,由于它的原因,能够在函数里高速定义一个便携的函数,或者在函数參数里直接高速构造和传递. 它能够说是匿名函数对象,一般仅仅适用于某个函数内,仅仅做暂 ...

  8. STM32出现HardFault故障的解决方法

    https://wenku.baidu.com/view/a4a7499afad6195f312ba6d2.html https://wenku.baidu.com/view/085b6fbe5022 ...

  9. quartus ii工程文件的分析

    .pof:通过AS口将程序固化到EPCS(flash)内. .sof:通过JTAG口下载到FPGA内部的SRAM里面. .JIC:通过JTAG口将程序固化到EPCS(flash)内.

  10. python 多线程 示例

    import threading import Queue q = Queue.Queue() from test import * def worker1(x, y): #假设耗时 执行完毕 大于三 ...