AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 39
指针 T*: 存储地址并可为 nullptr
C++ SELF
等级 39,
课时 0
解析基本的指针模型
T
*
在 C++ 中:指针作为“地址值”,通过
nullptr
的初始化约束,取地址操作
&
x
,复制(复制的是地址,而不是对象)、与
nullptr
及彼此比较,以及指针类型化(为什么
int
*
和
double
*
不能混用)。
解引用
*
p
与 访问
p
->
field
C++ SELF
等级 39,
课时 1
解析 C++ 中指针的机制:“地址”
&
x
与 值
x
有何不同,解引用
*
p
实际做了什么,如何通过地址读取与修改数据,为什么在解引用前检查
nullptr
很重要,以及通过
p
->
field
访问结构体字段的工作原理(等价于
(
*
p
)
.
field
)。最后——一组常见错误以及在处理对象生命周期时的注意点。
指针作为参数:nullable 设计
C++ SELF
等级 39,
课时 2
我们来分析为什么在函数中传递指针
T*
、如何把函数签名读作契约,以及为什么包含
nullptr
的分支不是“漏洞”,而是一种诚实的设计。比较 nullable 输入和必须指针(通过检查或
assert
),学习如何编写带有状态
bool
和 out 参数的
try_*
函数,并通过一个联系人簿的小练习来巩固所有内容。
指针的危险:未初始化和悬空指针
C++ SELF
等级 39,
课时 3
我们讲解 C++ 中指针的两类最狡猾的 bug:未初始化的
T
*
(内部是“垃圾”)和悬空的(
dangling
)——当地址比对象存活时间更长。演示为什么检查
nullptr
并不能解决所有问题,如何轻易“破坏”
std::vector
元素的地址,并通过一个包含联系人查找和使用
assert
保护契约的迷你应用
ContactBook
来巩固安全使用指针的规则。
T&
作为别名:引用必须引用一个对象
C++ SELF
等级 39,
课时 4
我们来讲解为什么 C++ 中的引用
T&
是别名(“第二个名字”),而不是独立的对象:引用必须立即初始化,不存在
nullptr
引用,也不存在通过
=
的“重新绑定”。在实践中我们看一下对
std::vector
元素的拷贝与引用的区别,澄清表达式
r = b;
的含义(那是对对象的赋值,而不是改变绑定),并汇总常见错误——从“空引用”到悬垂引用。
Please enable JavaScript to continue using this application.