小白学c嘎嘎(第二天)入门基础下

温馨提醒:本篇文章起,文章内容排版将更新,层层深入

基础知识

回顾

引用的语法格式:类型& 引⽤别名 = 引⽤对象;

引用特性

  1. 引⽤在定义时必须初始化
  2. ⼀个变量可以有多个引⽤
  3. ⼀旦引⽤⼀个实体,再不能引⽤其他实体

引用的使用

  1. 引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被引⽤对象

  2. 引⽤传参跟指针传参功能类似,引⽤传参相对更⽅便⼀些。

  3. 引⽤和指针在实践中相辅相成,功能有重叠性,但是各有特点,互相不可替代。
    C++的引⽤跟其他语⾔的引⽤(如Java)是有很⼤的区别的,除了⽤法,最⼤的点,C++引⽤定义后不能改变指向,Java的引⽤可以改变指向

const引用

可以引⽤⼀个const对象,但是必须⽤const引⽤。const也可用于引用普通对象,引用过程中:访问权限只能缩小不能放大

指针与引用的关系

  1. 语法概念上:引⽤不开空间,指针是存储⼀个变量地址,要开空间。

  2. 引⽤在定义时必须初始化,指针可以初始化,也可以不初始化

  3. 引⽤在初始化时引⽤⼀个对象后,就不能再引⽤其他对象,指针可以改变指向对象

  4. 引⽤可以直接访问指向对象,指针需要解引⽤才是访问指向对象。

  5. sizeof中含义不同,引⽤结果为 引⽤类型的⼤⼩ ,但指针始终是 地址空间所占字节个数

  6. 指针很容易出现空指针和野指针的问题,引⽤很少出现(注意:引用也会出现和指针相同的问题)

实操进阶

引用的特性

特性 1.引用初始化

特性 2.一个变量多个引用

引用的使用

1.引⽤传参和引⽤做返回值

const引用

权限问题:放大

如上图可知,权限不能放大

权限缩小

由上图可知,权限可以缩小

一些其他使用的简单介绍

引用类型转换:

double d = 3.14;

const int& rd = d;

引用传参

void func(const int& val)

{

语句;

}

内联函数

  1. ⽤inline修饰的函数叫做内联函数,编译时C++编译器会在调⽤的地⽅展开内联函数,这样调⽤内联函数就需要建⽴栈帧了,就可以提⾼效率。

  2. inline适⽤于频繁调⽤的短⼩函数,对于递归函数,代码相对多⼀些的函数,加上inline也会被编译器忽略。

  3. 替代C的宏函数。

  4. inline不建议声明和定义分离到两个⽂件,分离会导致链接错误。因为inline被展开,就没有函数地址,链接时会出现报错。

  5. vs编译器 debug版本下⾯默认是不展开inline的,这样⽅便调试,debug版本想展开需要设置⼀下以下两个地⽅。

nullptr

C++11中引⼊nullptr,nullptr是⼀个特殊的关键字,nullptr是⼀种特殊类型的字⾯量,它可以转换

成任意其他类型的指针类型。使⽤nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被

隐式地转换为指针类型,⽽不能被转换为整数类型。


相关推荐
2601_96288572几秒前
如何用 Python 获取上证指数、沪深300、中证500 等指数行情?
开发语言·python
Logic1018 分钟前
C语言/数据结构二维数组题解:找出行列O个数均为偶数的格子——奇偶性预处理+二次遍历
c语言·数据结构·算法·二维数组·时间复杂度·动态内存分配·奇偶性
张张123y17 分钟前
后端第六课:Python 语法速通(0 基础入门,AI 应用开发的第一门语言)
开发语言·人工智能·python·ai·后端开发
Want59519 分钟前
Python跳动的爱心①
开发语言·python·数学建模
ydjs678899-bot1 小时前
您的Next.js中间件匹配器配置可能会跳过您认为它保护的路由
开发语言·javascript·中间件
Chengbei111 小时前
JsOwl|AI 赋能 JS 敏感信息扫描器,AST + 正则、source‑map 源码还原、登录态爬虫输出交互式 HTML 报告
开发语言·javascript·网络·人工智能·爬虫·网络安全·自动化
David猪大卫1 小时前
【C++修炼】string类:string类的模拟实现
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
geovindu1 小时前
rust: Iterator Pattern
开发语言·后端·设计模式·rust·行为模式·迭代器模
Lxx_Zw2 小时前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·stm32·单片机·嵌入式硬件
SDWAN_Cheap2 小时前
深度解析什么是CDN加速:从原理到实践的技术拆解
开发语言·cdn加速