Eu acho que as coisas mais importantes para você saber sobre C são as diferenças entre C e C ++. Você provavelmente vai ver um código que tem algum estilo C nele em algum momento, e você não deve ser confundido quando você vê coisas como malloc
, free
, printf
, fopen
, ou fclose
. Você também deve saber como elas são semelhantes e como são diferentes de suas contrapartes em C ++.
Você também deve saber disso <<
e >>
são operadores de turno esquerdo e direito, não operadores de inserção. No C ++, onde você pode sobrecarregar os operadores, eles foram sobrecarregados para executar inserção de fluxo e coisas semelhantes, mas ainda são usados para mudar números inteiros.
Certifique-se de entender todos os recursos básicos que o C ++ possui e que não estão em C. Se você ler o stackoverflow.com o suficiente, verá muitas perguntas que envolvem as diferenças de idiomas e os mal-entendidos das pessoas.
Você também deve se familiarizar com o pré-processador C, que é quase o mesmo (e geralmente o mesmo programa) do pré-processador C ++. Saber usá-lo o ajudará em C ++, mas depende muito mais em C.
Uma coisa importante que é difícil de lidar em C que o C ++ possui são os destruidores. Essas coisas podem ser chamadas em todo o lugar, cuidando da liberação de recursos, mas em C você precisa fazer tudo isso de forma mais explícita. É fácil para os programadores de C ++ esquecerem de fazer.
No que diz respeito às entrevistas, se alguém lhe pedir para escrever código para algum algoritmo geral em C e você fizer algo como:
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
Eu não acho que eles vão decidir que você não sabe o que está fazendo porque não fez:
struct foo x;
E eles realmente não se importariam se você usasse, a cout
menos que o que eles estão tentando mostrar seja a sua capacidade de lidar com entrada e saída, o que o C ++ facilita para casos comuns.
Se você se encontra na posição de ser entrevistado para um trabalho que requer C, você deve ser sincero quanto à falta de conhecimento de C fora da sobreposição com C ++. Eles provavelmente entenderão que um bom programador deve conseguir fazer a transição para C do C ++ rapidamente.
Tudo isso dito, C não é tão grande assim. A biblioteca padrão é muito menor que a do C ++ e não é grande coisa se familiarizar com as partes mais comuns da mesma, portanto, não custa nada aprendê-la.