Tôi nghĩ rằng những điều quan trọng nhất để bạn biết về C là sự khác biệt giữa C và C ++. Bạn có thể sẽ thấy một số mã có một số phong cách C trong đó tại một số điểm, và bạn không nên nhầm lẫn khi bạn nhìn thấy những thứ như malloc
, free
, printf
, fopen
, hoặc fclose
. Bạn cũng nên biết chúng giống nhau như thế nào cũng như chúng khác với các đối tác C ++ của chúng như thế nào.
Bạn cũng nên biết rằng <<
và >>
là toán tử dịch chuyển trái và phải, không phải toán tử chèn. Trong C ++, nơi bạn có thể quá tải toán tử, chúng đã bị quá tải để thực hiện chèn luồng và những thứ tương tự, nhưng chúng vẫn được sử dụng để thay đổi số nguyên.
Hãy chắc chắn rằng bạn hiểu tất cả các tính năng cơ bản mà C ++ không có trong C. Nếu bạn đọc stackoverflow.com đủ, bạn sẽ thấy nhiều câu hỏi liên quan đến sự khác biệt trong ngôn ngữ và sự hiểu lầm của mọi người về chúng.
Bạn cũng nên tự làm quen với bộ tiền xử lý C, gần giống với (và thường là cùng một chương trình với) bộ tiền xử lý C ++. Biết cách sử dụng nó sẽ giúp bạn trong C ++, nhưng nó phụ thuộc rất nhiều vào C.
Một điều lớn khó giải quyết trong C mà C ++ có là các hàm hủy. Những thứ đó có thể được gọi ở khắp mọi nơi, đảm nhiệm việc giải phóng tài nguyên, nhưng trong C, bạn phải làm tất cả những điều đó rõ ràng hơn. Điều này là dễ dàng cho các lập trình viên C ++ để quên làm.
Theo như các cuộc phỏng vấn, nếu ai đó yêu cầu bạn viết mã cho một số thuật toán chung trong C và bạn làm một cái gì đó như:
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
Tôi không nghĩ rằng họ sẽ quyết định rằng bạn không biết bạn đang làm gì vì bạn đã không làm:
struct foo x;
Và họ thực sự không quan tâm nếu bạn sử dụng cout
trừ khi những gì họ đang cố gắng để bạn giới thiệu là khả năng xử lý đầu vào và đầu ra của bạn, điều này giúp C ++ dễ dàng hơn cho các trường hợp phổ biến.
Nếu bạn thấy mình ở vị trí được phỏng vấn cho một công việc yêu cầu C, bạn nên thẳng thắn về sự thiếu hiểu biết về C bên ngoài sự chồng chéo của nó với C ++. Họ có thể sẽ hiểu rằng một lập trình viên giỏi sẽ có thể thực hiện quá trình chuyển đổi sang C từ C ++ khá nhanh.
Tất cả điều đó đang được nói, C không phải là một ngôn ngữ lớn. Thư viện tiêu chuẩn nhỏ hơn nhiều so với C ++ và việc làm quen với những phần phổ biến nhất của nó không phải là vấn đề lớn, vì vậy việc tìm hiểu nó thực sự không hại gì.