你好, 欢迎回来｡
在这节课上, 我想 来讨论一些你可以进一步研究的话题｡
我们基本上要结束这门课了｡
我们要结束了｡
所以我们没有得到 来覆盖一切｡
很明显, 这是一个初级班｡
所以有很多先进的
你可以进一步学习的话题, 让c语言真正成为 c语言编程很棒, 我只想提一下其中的几个｡
首先, 我们没有 进入typedefs｡
我本想 我谈过这个,
但它是一个更先进的概念｡
我们讨论过枚举｡
而枚举是一种 创建您自己的类型｡
但具体到c中 一个名为typedef的关键字, 您可以创建自己的数据类型｡
这是非常有用的, 更 一个先进的概念｡
你绝对可以 了解更多信息｡
有关更多信息, 请访问 预处理器,
特别是字符串连接｡
预处理程序记住 在编译器之前运行｡
我们了解了 定义的语句｡
我们还学到了一些其他的东西
但是预处理器可以是一个完整的其他部分, 更多的信息｡
你可以用它来 优化大量代码, 以便可以提前运行它｡
您可以执行内联函数 在预处理器中运行, 都是一些不错的概念｡
关于虚空星还有很多｡
虚空星辰, 记住, 非常灵活｡
特别是, malloc 函数返回一个空星星｡
我们可以用void来创建函数 指针并传递空指针以使其更灵活｡
还有很多 我们可以研究一下｡
静态库和共享对象｡
我们没谈过这个 图书馆的概念｡
我们在链接时使用库｡
具体来说,
很多 在c标准库中定义库｡
但是您可以创建自己的库｡
我们创造了程序｡
计划是流程 在内存中运行｡
但库实际上是其他代码 您可以在其他程序中重复使用｡
所以例子, c标准库｡
如果您已在其他 语言, 通常是语言自带的API｡
有两种类型 您可以创建的库｡
您可以创建静态 链接时在其中编译所有代码库｡
然后, 您还可以创建一个共享 对象, 在程序执行期间,
您将 查找函数并调用它们｡
所以静态库通常是结束的 在一个点a中,
它们在静态时间被编译, 或者它们被编译 在中, 当您编译程式时｡
共享对象是点文件 或者你可以把它们看作是dll 听说过动态链接库和visual
c plus
plus吗｡
但共享对象 不是编译时｡
同样, 这也是一种重用代码的方法｡
我们可以研究这些概念 可以向您展示如何构建静态库以及共享对象｡
宏｡
我们没有机会 来讨论宏｡
这是一个高级主题｡
它由预处理器运行 主要是做替换, 字符串替换｡
我们所使用的一些功能 实际上是以宏的形式编写的,
比如assert宏｡
可以浏览宏 更详细地介绍｡
工会｡
工会通常 使用结构体｡
这是一种让多个不同 返回的数据类型或不同类型的成员元素
表示相同内容的结构｡
所以你可以有一个结构 具有一个成员, 但该成员可以是输入浮点数和
您可以使用union来执行此操作｡
其他主题函数指针｡
我们谈到了性格 指针, 甚至整数指针和双精度指针｡
但是你可以用指针 指向各种功能｡
所以当你的程序运行时, 您可以执行一个函数｡
下次运行时, 它可以基于用户输入执行不同的功能
或者类似的东西｡
函数指针是 完全是另一个话题｡
高级指针｡
指针的作用远不止这些 比我们之前讨论过的要好｡
我们讨论了 指针,
但我们可以更详细地讨论指针｡
存在指向指针的实际指针, 所以这里有双指针, 这是一个更高级的话题｡
函数的变量参数｡
这些都是指 作为变量函数｡
我们使用printf函数
它的参数个数是可变的, 但我们没有定义 任何参数数目可变的函数,
我们可以 探索这个概念非常有用｡
动态链接｡
这是当你打开 库, 它与共享对象略有不同｡
你可以打开图书馆 它可以提高性能,
可执行程序更小｡
所以打开dlm有一个实际的 库调用来执行此操作｡
信号, 分叉 进程间通信｡
这都可以在进程间进行探索 通信是指当你有两个程序要进行通信时｡
有不同的方法 他们可以交流｡
它们可以通过文件进行通信｡
他们可以通过 一种叫做套接字的东西｡
它们可以通过管道进行通信｡
有不同的技术 但这是两个进程想要互相对话的时候｡
分叉是您可以 创建另一个进程｡
还有图书馆要建 代码中的其他进程｡
如果您要创建另一个
进程时, 它会有自己的地址内存空间 它可以让你的程序更有效率｡
然后是信号, 我们没有进入 许多,
但信号用于调试生成不同的 消息发送到不同的程序｡
线程和并发｡
另一个高级主题 你想学习的东西｡
这允许多个执行 程序中的点｡
它允许您运行代码 几乎是同时｡
所以这是一个效率型的东西｡
如果有一个长时间运行的任务 需要在程序中执行的操作,
如监视数据或等待 或者您的任务是阅读一个巨大的文件, 您可以创建另一个
线程来执行该操作, 然后仍然执行程序的其他部分
同时结合在一起｡
插座｡
套接字用于联网｡
如果需要, 可以使用插座 以连接到另一台计算机并从该计算机获取数据｡
网络非常非常大, 因为我们 有互联网和其他一切｡
这样你就可以了解 套接字和请参见｡
有两个功能 叫立定跳远和跳远
这是为了恢复状态｡
我们可以在 关于内存管理和碎片详细信息｡
这不仅仅是malloc的事 这就是你如何管理你的内存并把它放在堆或栈上｡
您可以确保您的程序 更有效率,
所以不会有太多的碎片｡
碎片是你拥有记忆的地方 在不同的位置,
而且它不是连续的, 因此可能很难 多花点时间查找内存｡
可以减少碎片｡
我们可以努力使 程序的可移植性｡
一般来说, c++程序 非常便于携带｡
但是还有更多的技术
您可以利用来确保编写一次程序就可以运行 可以在许多不同的操作系统上运行, 而且您不必重写它｡
我们基本上可以使用 在C中可用的一些POSIX标准｡
我们可以确保
在c标准的哪个不同版本上, 他们 通过使用某些约定在多个标准中工作｡
我们也可以编写 直接与内核接口｡
请记住, 内核是 操作系统的大脑｡
内核包含所有驱动程序｡
它包含了各种各样的调用 到较低级别的存储器功能｡
它做了很多 不同的信息｡
因此内核具有特定的 功能,
您可以在c程序中与它进行接口｡
这将是低 嵌入式内容级别
所以我们可以用电话 如IO控件｡
我们可以创建驱动程序 直接与硬件对话｡
关于编译器还有很多
以及可以传递给编译器的不同标志, 或者 链接器, 这也会使程序更高效｡
我们还没来得及 谈论了很多不同的旗帜｡
我们主要讲了破折号 墙和其他一些基本的, 但没有更先进的｡
我们讨论了调试器 以及如何调试应用程序｡
代码块中的调试器 通过图形用户界面｡
但调试器的真实的优势 它使用gdb｡
Gdb是gnu调试器｡
我们只讨论了断点 并通过图形用户界面使用它, 但您可以
实际上gdb做得更多｡
我们可以通过gdb调试器 从控制台发出不同的命令,
使用
核心转储文件了解如何使用gdb读取核心转储文件 有很多很好的高级主题｡
分析和跟踪工具｡
我们还没谈过 静态分析器,
一些可以在您
运行你的程序看看是否有死代码或者 任何不良的编程实践｡
还有追踪工具 trace､ d
trace､ g
profile, 这些都是您可以 用于查看以帮助您调试和测量效率或 使用了多少内存或程序的性能｡
还有其他额外的内存 调试工具, 如valgrind｡
当您有类似 争用条件或内存损坏问题｡
很多时候当你在管理 您的内存发生缓冲区溢出或内存泄漏时,
非常非常难找到｡
所以现在有一些工具可以 帮助你找到那些如valgrind｡
所以有很多不同的 您可以探索的主题,
以成为c语言专家｡
我们触及了基础知识｡
我们谈到了 重要的东西开始｡
但有了这些额外的 主题, 你可以成为一个专家｡
-谢谢—谢谢