首先,必须纠正一下,C 语言绝不是最常用的编程语言。现在,除了一些底层应用(操作系统,编译器等)和嵌入式应用,近乎不会有人使用 C 语言做开发了。一个核心原因,就是 C 不支持的语言特性太多了,最典型的就是面向对象。
而即使从系统底层开发的角度看,C 语言也有被“代替”的风险,rust 的使命就是如此。
我个人 200% 的不建议使用 C 语言学习算法和数据结构,核心原因就是因为,由于 C 语言缺失太多语言特性,使得在具体实现的时候,需要关注太多和算法和数据结构的逻辑本身无关的语言细节,比如内存管理,从而淹没了对算法和数据结构本身的理解。
至于你提到的问题,大多涉及面向对象的概念,如果真的有兴趣,我推荐一本书,专门讲如何使用 C 语言实现很多面向对象的概念。这本书在网上完全公开,不过只有英文版。
不过依然是,如果不是非常有兴趣,或者不是因为需要把 C 语言研究到很深的地步,我并不建议在这个问题上花过多时间。
继续加油!:)