Penso che le cose più importanti da sapere riguardo a C siano le differenze tra C e C ++. Probabilmente vedrai un codice che ha qualche stile in C ad un certo punto, e non dovresti essere confuso quando vedi cose come malloc
, free
, printf
, fopen
o fclose
. Dovresti anche sapere come sono simili e come sono diversi dalle loro controparti in C ++.
Devi anche sapere che <<
e >>
sono operatori di spostamento a sinistra e a destra, non operatori di inserimento. In C ++, dove è possibile sovraccaricare gli operatori, questi sono stati sovraccaricati per eseguire l'inserimento di stream e cose simili, ma sono ancora utilizzati per spostare gli interi.
Assicurati di aver compreso tutte le funzionalità di base di C ++ che non sono in C. Se leggi Stackoverflow.com abbastanza avrai visto molte domande che implicano le differenze nelle lingue e le incomprensioni delle persone su di esse.
Dovresti anche familiarizzare con il preprocessore C, che è quasi lo stesso (e spesso lo stesso programma) del preprocessore C ++. Sapere come usarlo ti aiuterà in C ++, ma è molto più affidabile in C.
Una cosa grande che è difficile da gestire in C che C ++ ha è distruttori. Quelle cose possono essere chiamate dappertutto, avendo cura di liberare risorse, ma in C devi fare tutto ciò in modo più esplicito. È facile per i programmatori C ++ dimenticare di farlo.
Per quanto riguarda le interviste, se qualcuno ti chiede di scrivere il codice per qualche algoritmo generale in C e fai qualcosa del tipo:
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
Non penso che decideranno che non sai cosa stai facendo perché non lo hai fatto:
struct foo x;
E loro non dovrebbero preoccuparsi se hai usato cout
a meno che quello che stanno cercando di farti mostrare sia la tua capacità di gestire input e output, che il C ++ rende più facile per casi comuni.
Se ti trovi nella posizione di essere intervistato per un lavoro che richiede C, dovresti essere in anticipo sulla tua mancanza di conoscenza di C al di fuori della sua sovrapposizione con C ++. Probabilmente capiranno che un buon programmatore dovrebbe essere in grado di rendere la transizione a C da C ++ abbastanza rapidamente.
Tutto ciò detto, C non è una lingua così grande. La libreria standard è molto più piccola di quella del C ++ e non è un grosso problema per familiarizzare con le parti più comuni di esso, quindi non può davvero far male apprenderlo.