我认为关于C最重要的事情是C和C ++之间的区别。你可能会看到一个其中有一些C风格在某些时候一些代码,你不应该混淆,当你看到喜欢的东西malloc
,free
,printf
,fopen
,或fclose
。您还应该知道它们与C ++的相似之处以及区别。
你也应该知道,<<
并且>>
是左,右移位运算符,而不是插入运营商。在C ++中,您可以重载运算符,但这些运算符已经被重载以执行流插入和类似的操作,但是它们仍然用于移位整数。
确保您了解C ++所没有的所有C ++基本功能。如果您足够了解stackoverflow.com,就会发现很多问题,涉及语言的差异以及人们对其的误解。
您还应该熟悉C预处理程序,它几乎与C ++预处理程序相同(并且经常与C ++预处理程序相同)。知道如何使用它会在C ++中对您有所帮助,但是在C中它更多地依赖于它。
C ++很难在C中处理的一件大事是析构函数。可以在所有地方调用这些东西,以节省资源,但是在C语言中,您必须更明确地执行所有这些操作。C ++程序员很容易忘记这样做。
就采访而言,如果有人要求您用C语言编写一些通用算法的代码,您会执行以下操作:
struct foo {
int a;
void * b;
};
foo x; // in C++ this would work, but in C it would fail because struct names aren't in the
// type name table unless you put them there with typedef
我认为他们不会因为您没有做而决定您不知道自己在做什么:
struct foo x;
而且他们真的不在乎您是否使用过,cout
除非他们试图让您展示的是您处理输入和输出的能力,而C ++在常见情况下会更容易。
如果您确实找到了需要C的职位而接受了面试,那么您应该在与C ++重叠的地方预先了解C的知识。他们可能会理解,一个好的程序员应该能够相当快地从C ++过渡到C。
话虽这么说,C并不是一种语言。标准库比C ++的要小得多,让您熟悉它的最常见部分也没什么大不了的,因此学习它真的不会受到伤害。