Creo que lo más importante que debes saber sobre C son las diferencias entre C y C ++. Es probable que vea un código que tiene algo de estilo C en ella en algún momento, y no debe ser confundido cuando ves cosas como malloc
, free
, printf
, fopen
, ofclose
. También debe saber cómo son similares y cómo son diferentes de sus contrapartes de C ++.
También debe saber eso <<
y >>
son operadores de desplazamiento a izquierda y derecha, no operadores de inserción. En C ++, donde puede sobrecargar los operadores, estos se han sobrecargado para realizar la inserción de la secuencia y cosas similares, pero aún se usan para cambiar números enteros.
Asegúrese de comprender todas las características básicas que tiene C ++ que no se encuentran en C. Si lee stackoverflow.com lo suficiente, habrá visto muchas preguntas que involucran las diferencias en los lenguajes y los malentendidos de las personas sobre ellos.
También debe familiarizarse con el preprocesador C, que es casi lo mismo (y a menudo el mismo programa) que el preprocesador C ++. Saber cómo usarlo lo ayudará en C ++, pero se confía mucho más en C.
Una gran cosa que es difícil de tratar en C que tiene C ++ son los destructores. Esas cosas se pueden llamar por todas partes cuidando la liberación de recursos, pero en C tienes que hacer todo eso de manera más explícita. Es fácil para los programadores de C ++ olvidarse de hacerlo.
En cuanto a las entrevistas, si alguien le pide que escriba código para algún algoritmo general en C y usted hace 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
No creo que vayan a decidir que no sabes lo que estás haciendo porque no lo hiciste:
struct foo x;
Y realmente no debería importarles si lo usó a cout
menos que lo que están tratando de hacer que muestre es su capacidad para manejar la entrada y la salida, lo que C ++ facilita para los casos comunes.
Si se encuentra en la posición de ser entrevistado para un trabajo que requiere C, debe ser sincero acerca de su falta de conocimiento de C fuera de su superposición con C ++. Probablemente entenderán que un buen programador debería poder hacer la transición a C desde C ++ con bastante rapidez.
Dicho todo esto, C no es un lenguaje tan grande. La biblioteca estándar es mucho más pequeña que la de C ++ y no es tan importante familiarizarse con las piezas más comunes, por lo que realmente no puede hacer daño aprenderla.