Cについて知っておくべき最も重要なことは、CとC ++の違いだと思います。あなたは、おそらくいくつかの時点で、その中にいくつかのCのスタイルを持っているいくつかのコードが表示され、あなたのようなものを見たとき、あなたは混同してはならないmalloc
、free
、printf
、fopen
、またはfclose
。また、これらがどのように似ているか、C ++の対応するものとどのように異なっているかも知っている必要があります。
また、<<
and >>
は左および右シフト演算子であり、挿入演算子ではないことも知っておく必要があります。演算子をオーバーロードできるC ++では、ストリーム挿入などを実行するためにオーバーロードされていますが、整数のシフトには引き続き使用されます。
C ++にはCにはない基本的な機能がすべて揃っていることを確認してください。stackoverflow.comを十分に読めば、言語の違いやそれらの誤解に関する多くの質問を目にするでしょう。
また、Cプリプロセッサに慣れる必要があります。Cプリプロセッサは、C ++プリプロセッサとほとんど同じです(多くの場合、同じプログラムです)。それを使用する方法を知っていると、C ++で役立ちますが、Cではより多くに依存しています。
C ++が持つCでの対処が難しい大きな問題の1つはデストラクタです。これらのことは、リソースの解放を管理しているすべての場所で呼び出すことができますが、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 ++よりもはるかに小さく、最も一般的な部分に慣れるのはそれほど大したことではないので、学習するのは本当に害にはなりません。