文章目录

  • 1、const与指针
    • 1.1、指向常量的指针
    • 1.2、常指针
    • 1.3、指向常量的常指针
  • 2、內联函数
  • 3、引用
  • 4、传递数组引用

1、const与指针

int a;
int* b = &a;

这里分配了两个地址,一个是指针b指向的地址,一个是变量a存放的地址。const在不同的位置代表着能够修改的东西不同。这是核心本质。

1.1、指向常量的指针

const在最前面,作用于指向的内容不变。 指针指向的内容不能改变,但指向的地址可以改变。


int main(){int a = 1;const int* b = &a;int c = 2;//查看原地址,原内容。cout << &a << ", "<< b << endl;cout << *b << endl;//修改b指针指向的地址b = &c;cout << &c << ", "<< b << endl;cout << *b;//*b = c  报错,因为这里修改了b指针的内容。return 0;
}

可以看到b指针的地址变了,指向了c;

1.2、常指针

const在*后变量名前,作用于指针指向的的地址。 指针指向的内容可以改变,但指向的地址不能改变。

int main(){int a = 1;int* const b = &a;int c = 2;//查看原地址,原内容。cout << &a << ", "<< b << endl;cout << *b << endl;//修改b指针指向的地址*b = c;cout << &c << ", "<< b << endl;cout << *b;//b = &c  报错,因为这里修改了b指针的地址。return 0;
}

可以看到b指针的地址没变,但是内容变了。

1.3、指向常量的常指针

指向的地址,指向的内容都不能更改。

const int* const b;

2、內联函数

 inline float circle(float r) {  return 3.1416*r*r; } int rectangle(float r) {  return 3.1416*r*r; }

常规函数:系统每次在main函数中调用到rectangle函数的时候就单独执行rectangle函数体。
內联函数:系统每次在main函数中调用到circle函数的时候直接将circle函数复制到main函数中调用。
优点:在內联函数体量较小的时候,可以用空间换取时间,提高程序效率。

3、引用

简单来说就是在将参数传入函数的时候,不采用引用就传入的变量是在新的地址上的一个变量,对该变量做修改不会影响到原变量。如果传入的是引用,而是直接将变量本身传入到函数中,修改该变量原变量会做同样的修改。

#include<iostream>
using namespace std;
int sw(int a) {cout << &a << endl;
}
int aw(int &a){cout << &a << endl;
}
int main(){int a = 3;cout << &a << endl;sw(a);cout << endl;cout << &a << endl;aw(a);return 0;
}

可以看到前两行输出的地址不同,后两行输出的地址是一样的,基于地址的不同,因此在函数中对穿进来的变量的修改将会影响到原变量的内容。

4、传递数组引用

//&要和数组名用括号括起来
void change(int (& arr)[MAXN]);

C++概述部分内容记录相关推荐

  1. Appendix:附录文件内容记录脚本代码转换过程记录

    Appendix:附录文件内容记录脚本代码转换过程记录 附录文件内容记录脚本代码转换过程记录 Microsoft Windows [版本 10.0.14393] (c) 2016 Microsoft ...

  2. Appendix之setup.py:附录文件内容记录setup.py

    Appendix之setup.py:附录文件内容记录setup.py 附录文件内容记录setup.py from __future__ import print_functionfrom distut ...

  3. Visual Studio 2017更新内容记录

    Visual Studio 2017更新内容记录 个人认为值得一提的重点更新内容: IDE: 团队资源管理器中的新增 Git 功能并增强了连接体验 - 在 Visual Studio 2017 中可使 ...

  4. Cs231n课堂内容记录-Lecture2-Part2 线性分类

    Lecture 3 课程内容记录:(上)https://zhuanlan.zhihu.com/p/20918580?refer=intelligentunit (中)https://zhuanlan. ...

  5. 计算机论文指导记录范本,论文指导内容记录怎么写 3篇 论文指导记录20篇

    论文指导内容记录怎么写 3篇 论文指导记录20篇 论文指导内容记录怎么写 3篇 论文指导记录20篇精品文档,仅供参考论文指导内容记录怎么写 3篇 论文指导记录20篇指导是一个汉语词语,读音为zhdo, ...

  6. 电脑桌面日历便签软件怎么通过月视图查看某一天的便签内容记录?

    一.打开已登录的电脑桌面便签软件敬业签Windows版,默认进行便签主界面,点击右上角日历按钮,打开日历月视图界面: 二.在日历月视图界面,默认显示当月的日历月视图,右上角可以切换上一月或者下一月,选 ...

  7. 新浪微博APP开发应用示例之获取指定微博账户的微博内容记录

    最近在搞下新浪微博APP开发应用,这个示例之获取指定微博账户的微博内容记录 合肥网产品中心 新浪微博APP开发应用示例演示 < html > < head > < tit ...

  8. 计算机实验内容记录,关于实验数据自动记录到电脑上的问题

    关于实验数据自动记录到电脑上的问题以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 关于实验数据自动记录到电脑上的问题 实 ...

  9. 教学概述+教学内容+教学原则+教学方法+教学组织...+教学模式和教学策略

    3.1 教学概述 一.教学的概念和意义 二.教学的任务 3.2教学内容 一.教学过程的本质 二.教学过程的基本规律 三.教学过程的基本阶段(结构) 3.3 教学原则 目标:理解并识记八大教学原则 1. ...

  10. 修改html不显示内容,记录网友修改网页导致文章内容不显示的问题

    一个网友联系老蒋,自己的网站在之前修改模板添加广告的,但是不清楚什么问题导致目前网站首页能正常打开,但是内容页只能显示标题,内容是无法打开的.而且这个问题其实在十几天前有修改过页面,自己后来都没有动过 ...

最新文章

  1. js实现UTC时间转为北京时间,时间戳转为时间
  2. ikvm Java中异常_使用IKVMC将Java转换为.NET库 – 警告IKVMC0108:...
  3. C# 该行已经属于还有一个表 的解决方法
  4. 看见到洞见之引子(二)机器学习算法
  5. 【转】非常道-中小软件公司项目管理
  6. Centos 安装配置gerrit
  7. 转 13种最为荒谬的编程语言(Bugku 加密)
  8. 最新!基于深度学习的图像超分技术一览
  9. centOS 安装远程桌面
  10. 《王亡於江上》之周昭王姬瑕
  11. SAP PI SLD RZ70 系统架构目录数据提供者 HTTP(S) 配置
  12. win10专业版有必要吗_Win10专业版和家庭版系统有什么不同?
  13. EasyClick iOS脚本免越狱免硬件实现方案_可云控大量部署
  14. 信捷原创程序,8个伺服轴。 PLC:信捷XDM-60T10 HMI:信捷TG765 总体I/O在200个点之内
  15. C#增加SVN版本管控方法
  16. lex与yacc程序学习(3)——yacc源程序的结构yacc编译器的实践
  17. 前端基础三之JavaScript基础
  18. 关于新公司的一些感悟
  19. 鸿蒙开发学习书籍全收录【上】
  20. Java基础【之】JDK环境配置(Windwos)

热门文章

  1. 设计模式之中介者备忘录原型访问者
  2. 提高短线操作成功率的诀窍!
  3. 【ASP.NET学习笔记一】ASP.NET页面传参总结
  4. 控制按键的 几种方法
  5. pandas + sqlalchemy mysql
  6. 作业 20181016-1 Alpha阶段贡献分配规则
  7. 树莓派安装DLNA实现流媒体服务器
  8. Robot framework之元素定位实战
  9. Node做网页爬虫时遇到的Html entites对象造成乱码
  10. [极客]每个极客都应该知道的Linux技巧 (1)