ฉันคิดว่าสิ่งที่สำคัญที่สุดที่คุณควรรู้เกี่ยวกับ C คือความแตกต่างระหว่าง C และ C ++ คุณอาจจะเห็นรหัสบางอย่างที่มีสไตล์ C บางอย่างในนั้นในบางจุดและคุณไม่ควรจะสับสนเมื่อคุณเห็นสิ่งที่ชอบmalloc
, free
, printf
, fopen
หรือfclose
หรือคุณควรทราบด้วยว่าสิ่งเหล่านี้มีความคล้ายคลึงกันอย่างไรและแตกต่างจากคู่ค้า C ++ อย่างไร
นอกจากนี้คุณควรรู้ว่า<<
และ>>
ที่เหลือและผู้ประกอบการเปลี่ยนแปลงที่ถูกต้องไม่ประกอบการแทรก ใน C ++ ที่คุณสามารถโอเวอร์โหลดโอเปอเรเตอร์เหล่านี้มีการโอเวอร์โหลดเพื่อทำการแทรกสตรีมและสิ่งที่คล้ายกัน แต่พวกมันยังคงใช้ในการเลื่อนจำนวนเต็ม
ตรวจสอบให้แน่ใจว่าคุณเข้าใจคุณสมบัติพื้นฐานทั้งหมดที่ C ++ มีที่ไม่ได้อยู่ใน C หากคุณอ่าน stackoverflow.com คุณจะเห็นคำถามมากมายที่เกี่ยวข้องกับความแตกต่างในภาษาและความเข้าใจผิดของผู้คน
คุณควรทำความคุ้นเคยกับตัวประมวลผลล่วงหน้า C ซึ่งเกือบจะเหมือนกับ (และมักจะเป็นโปรแกรมเดียวกับ) ตัวประมวลผลล่วงหน้า C ++ การรู้วิธีใช้มันจะช่วยคุณใน C ++ แต่มันขึ้นอยู่กับ C มากขึ้น
สิ่งใหญ่สิ่งหนึ่งที่ยากที่จะจัดการใน C ที่ C ++ มีคือ destructors สิ่งเหล่านั้นสามารถเรียกได้ทั่วทุกแห่งที่ดูแลการปลดปล่อยทรัพยากร แต่ใน 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 ++ มากและมันก็ไม่ใช่ข้อตกลงที่ยิ่งใหญ่ที่จะทำความคุ้นเคยกับชิ้นส่วนที่พบบ่อยที่สุดดังนั้นมันจึงไม่เป็นเรื่องยากที่จะเรียนรู้