03 - Pointers and GDB

03 - 指针 与 GDB

学习自主学习。自主阅读技术文档,很重要。

1. 指针

swap函数引出指针的必要性。老生常谈了。指针传递并非传递副本。

1.1. 指针作为函数参数

当函数结束的时候,计算机会忘记当时因函数执行分配的内存是用来干嘛的了。这不意味着他会被赋予 NULL 值,或者用 0 值覆盖,又或者被清空。

1.2. 指针传值

指针...地址...指针...地址,初学者的噩梦。

2. the Greatest "BUG"

CS 世界 BUG 无处不在。我们不能避免,但我们可以为此做些预备。

  • 栈错误。包括变量未初始化。计算机会遗忘内存的一些内容。需要时时刻刻下达对应指令。

  • 内存泄漏

2.1. GDB 调试

通过 GDB 找出程序在哪一步开始不符合你的预期。

2.2. 趁机学一下...

又是我的知识盲区。

3. 穿插

3.1. CS50 开源库

C 语言的开源特性使得我们可以使用网上更新的动态函数库。

3.2. malloc 动态内存分配

要 Free,如果长久不 Free的话程序运行非常画满,效率变得底下。

3.3. relloc

自动 Free

3.4. 结构体

一种包含好几种类型数据的类型...

讲的很细......每次都有结合和callback...遥遥领先某电专。

3.5. 判断分支的布尔值

可以与输入输出函数结合作为提升程序健壮性的工具。

3.6. 文件输入输出

fprintf将输出打到文件中,而不是屏幕上

sscanf等等一些基本的标准输入输出

3.7. 交互设备

键盘输入、屏幕输出、文件输入 & 输出

Last updated