我想我有C++的高级知识,我想学习C.
有很多资源可以帮助人们从C到C++,但我没有找到任何有用的东西来做相反的事情.
特别:
qua*_*ark 27
这里已经有了很多,所以也许这只是一个小小的补充,但我发现这是最大的差异.
图书馆:
成语:
vector和string为您节省大量的工作),智能指针(你不能真正做到"智能指针"这样的C.你可以做引用计数,但你必须向上和向下的参考重视自己,这是非常容易出错的 - 首先是智能指针被添加到C++中的原因),并且如果习惯了C++编程的现代风格,通常会缺少RAII.
class在C++中没有明确将函数绑定到类型.您必须维护一个约定,以便为与类型关联的所有内容添加前缀.enum许多旧代码#define),以及泛型(C++使用模板).建议:
大量使用前向声明来使类型不透明.在C++中,您可能在标头中有私有数据并且依赖于private阻止访问,在C中您希望尽可能地将实现细节推送到源文件中.(在我看来,你实际上也希望在C++中这样做,但是C使它变得更容易,所以更多的人会这样做.)
C++揭示了标题中的实现,即使它在技术上隐藏了它在类外的访问.
// C.hh
class C
{
public:
void method1();
int method2();
private:
int value1;
char * value2;
};
Run Code Online (Sandbox Code Playgroud)
C将"类"定义推送到源文件中.标题是所有前向声明.
// C.h
typedef struct C C; // forward declaration
void c_method1(C *);
int c_method2(C *);
// C.c
struct C
{
int value1;
char * value2;
};
Run Code Online (Sandbox Code Playgroud)Q5.还有什么有用的知道吗?
购买K&R2的副本并阅读.在每页成本的基础上,它可能是您用自己的钱购买的最昂贵的计算书,但它会让您对C及其中的思维过程深表感谢.做练习也会磨练你的技能,让你习惯语言中的可用语言,而不是C++.