Cảnh báo
Đây là một danh sách các cuốn sách ngẫu nhiên có chất lượng đa dạng. Theo quan điểm của một số người (với một số biện minh), nó không còn là một danh sách các cuốn sách được đề xuất. Một số sách được liệt kê có chứa tuyên bố không chính xác hoặc dạy các hành vi sai / có hại. Những người nhận thức được những cuốn sách như vậy có thể chỉnh sửa câu trả lời này để giúp cải thiện nó. Xem danh sách sách C đã đi haywire. Phải làm gì với nó? , và cũng đã xóa kiểm toán câu hỏi 2018 .
Tham khảo (Tất cả các cấp)
Người bắt đầu
Trung gian
Modern C - Jens Gustyt (2017 1st Edn; 2020 2nd Edn). Bao gồm C ở 5 cấp độ (gặp gỡ, làm quen, nhận thức, kinh nghiệm, tham vọng) từ đầu C đến nâng cao C. Nó bao gồm C11 và C17, bao gồm các chủ đề và truy cập nguyên tử, điều mà ít cuốn sách khác làm được. Không phải tất cả các trình biên dịch nhận ra các tính năng này trong tất cả các môi trường.
C Giao diện và triển khai - David R. Hanson (1997). Cung cấp thông tin về cách xác định ranh giới giữa giao diện và triển khai trong C theo cách chung và có thể sử dụng lại. Nó cũng thể hiện nguyên tắc này bằng cách áp dụng nó vào việc thực hiện các cơ chế và cấu trúc dữ liệu phổ biến trong C, chẳng hạn như danh sách, bộ, ngoại lệ, thao tác chuỗi, cấp phát bộ nhớ, v.v. Về cơ bản, Hanson đã lấy tất cả mã mà anh ta đã viết như một phần của việc xây dựng Biểu tượng và lcc và rút ra các bit tốt nhất ở dạng mà người khác có thể sử dụng lại cho các dự án của riêng họ. Đó là mô hình lập trình C tốt bằng các kỹ thuật thiết kế hiện đại (bao gồm trừu tượng hóa dữ liệu của Liskov), cho thấy cách tổ chức một dự án C lớn như một loạt các thư viện hữu ích.
Cuốn sách giải đố C - Alan R. Feuer (1998)
Thư viện C tiêu chuẩn - PJ Plauger (1992). Nó chứa mã nguồn hoàn chỉnh để triển khai thư viện chuẩn C89, cùng với thảo luận rộng rãi về thiết kế và lý do mã được thiết kế như được hiển thị.
Thế kỷ 21 C: C Lời khuyên từ trường học mới - Ben Klemens (2012). Ngoài ngôn ngữ C, cuốn sách giải thích gdb, valgrind, autotools và git. Các ý kiến về phong cách được tìm thấy trong phần cuối (Chương 6 và hơn thế nữa).
Các thuật toán trong C - Robert Sedgewick (1997). Cung cấp cho bạn một nắm bắt thực sự về việc thực hiện các thuật toán trong C. Rất sáng suốt và rõ ràng; có lẽ sẽ khiến bạn muốn vứt bỏ tất cả những cuốn sách thuật toán khác của bạn và giữ cuốn sách này.
Con trỏ trên C - Kenneth Reek (1997).
Con trỏ trong C - Naveen Toppo và Hrishikesh Dewan (2013).
Giải quyết vấn đề và thiết kế chương trình trong C (Ấn bản thứ 6) - Jeri R. Hanly và Elliot B. Koffman (2009).
Cấu trúc dữ liệu - Cách tiếp cận nâng cao sử dụng C - Jeffrey Esakov và Tom Weiss (1989).
C Giải phóng - Richard Heathfield, Lawrence Kirby, et al. (2000). Không lý tưởng, nhưng nó là giá trị lập trình viên trung gian thực hành các vấn đề được viết trong cuốn sách này. Đây là một cách tiếp cận giống như sách dạy nấu ăn được đề xuất bởi những người đóng góp comp.lang.c.
Chuyên gia
Chưa phân loại
Essential C (PDF miễn phí) - Nick Parlante (2003). Lưu ý rằng điều này mô tả ngôn ngữ C90 tại một số điểm ( ví dụ: khi thảo luận về //
ý kiến và vị trí khai báo biến tại các điểm tùy ý trong mã), vì vậy cần thận trọng khi xử lý.
Câu hỏi thường gặp về lập trình C: Câu hỏi thường gặp - Steve Summit (1995). Đây là cuốn sách của trang web được liệt kê trước đó. Nó không bao gồm C99 hoặc các tiêu chuẩn sau này.
C in a Nutshell - Peter Prinz và Tony Crawford (2005). Cuốn sách tuyệt vời nếu bạn cần một tài liệu tham khảo cho C99.
Chức năng C - Pieter Hartel và Henk Muller (1997). Dạy các thực hành hiện đại có giá trị cho lập trình cấp thấp, với sự đồng thời và mô đun hóa trong tâm trí.
Thực hành lập trình - Brian W. Kernighan và Rob Pike (1999). Một cuốn sách rất hay đi cùng K & R. Nó cũng sử dụng C ++ và Java.
C Bẫy và cạm bẫy của A. Koenig (1989). Rất tốt, nhưng kiểu C trước ngày chuẩn C, khiến cho nó ít được khuyên dùng trong những ngày này.
Một số người đã lập luận cho việc loại bỏ 'Bẫy và cạm bẫy' khỏi danh sách này vì nó đã khiến một số người mắc bẫy mắc lỗi; những người khác tiếp tục tranh luận cho sự bao gồm của nó. Có lẽ nó nên được coi là một cuốn sách 'chuyên gia' bởi vì nó đòi hỏi kiến thức sâu rộng vừa phải về C để hiểu những gì đã thay đổi kể từ khi nó được xuất bản.
Xây dựng Lisp của riêng bạn - Daniel Holden (2014). Một cách thú vị để học C.
MISRA-C - tiêu chuẩn công nghiệp được công bố và duy trì bởi Hiệp hội độ tin cậy phần mềm công nghiệp ô tô. Bao gồm C89 và C99.
Mặc dù đây không phải là một cuốn sách như vậy, nhưng nhiều lập trình viên khuyên bạn nên đọc và thực hiện càng nhiều càng tốt. MISRA-C ban đầu được dự định là hướng dẫn cho các ứng dụng quan trọng về an toàn, nhưng nó áp dụng cho bất kỳ lĩnh vực ứng dụng nào có mã C ổn định, không có lỗi (ai không muốn ít lỗi hơn?). MISRA-C đang trở thành tiêu chuẩn thực tế trong toàn bộ ngành công nghiệp nhúng và ngày càng trở nên phổ biến ngay cả trong các ngành lập trình khác. Có (ít nhất) ba ấn phẩm của tiêu chuẩn (1998, 2004 và phiên bản hiện tại từ 2012). Ngoài ra còn có tài liệu Hướng dẫn tuân thủ MISRA từ năm 2016 và MISRA C: 2012 Sửa đổi 1 - Nguyên tắc bảo mật bổ sung cho MISRA C: 2012 (xuất bản vào tháng 4 năm 2016).
Lưu ý rằng một số hạn chế trong các quy tắc MISRA không phù hợp với mọi bối cảnh. Ví dụ, chỉ thị 4.12 nêu rõ "Không được sử dụng cấp phát bộ nhớ động". Điều này phù hợp trong các hệ thống nhúng mà quy tắc MISRA được thiết kế; nó không thích hợp ở mọi nơi (Ví dụ, trình biên dịch thường sử dụng cấp phát bộ nhớ động cho những thứ như bảng biểu tượng và để thực hiện mà không cấp phát bộ nhớ động sẽ rất khó, nếu không phải là vô lý.)
Lưu trữ danh sách các cuốn sách được ACCU đánh giá về Người mới bắt đầu C (116 đầu sách) từ năm 2007 và Nâng cao C (76 đầu sách) từ năm 2008. Hầu hết các sách này không còn xuất hiện trên trang web chính nữa và bạn không thể duyệt theo chủ đề đó dù sao.
Cảnh báo
Hãy cảnh giác với những cuốn sách được viết bởi Herbert Schildt . Cụ thể, bạn nên tránh xa C: The Complete Reference (4th Edition, 2000), được biết đến trong một số vòng tròn là C: The Complete Nonsense.
Cũng không sử dụng cuốn sách Let Us C ( Phiên bản thứ 16 , 2017) của Yashwant Kanetkar. Nhiều người xem nó như một cuốn sách lỗi thời dạy Turbo C và có nhiều tài liệu lỗi thời, sai lệch và không chính xác. Ví dụ, trang 137 thảo luận về đầu ra dự kiến từ printf("%d %d %d\n", a, ++a, a++)
và không phân loại nó là hành vi không xác định như bình thường.
Tìm hiểu C The Hard Way (2015) của Zed Shaw. Một cuốn sách với nhiều ý kiến trái chiều.
Một bài phê bình về cuốn sách này của Tim Hentenaar:
Để tóm tắt quan điểm của tôi, được trình bày dưới đây, tác giả trình bày tài liệu theo cách rất đơn giản và sai lệch, toàn bộ văn bản là một mớ hỗn độn, và một số ý kiến và phân tích mà ông đưa ra hoàn toàn sai. Tôi đã cố gắng xem cuốn sách này qua con mắt của một người mới, nhưng thật không may, tôi bị thiên vị bởi nhiều năm kinh nghiệm viết mã ở C. Rõ ràng với tôi rằng tác giả có một sự hiểu biết thiếu sót về C, hoặc anh ta cố tình quá mức đối với điểm mà anh ấy thực sự đánh lừa người đọc (cố ý hay cách khác.)
"Learn C The Hard Way" không phải là cuốn sách mà tôi có thể giới thiệu cho người vừa học lập trình vừa học C. Nếu bạn đã là một lập trình viên có năng lực trong một số ngôn ngữ liên quan khác, thì nó đại diện cho một giải thích thú vị và khác thường trên C, mặc dù tôi có đặt phòng về các phần của cuốn sách. Jonathan Leffler
Lỗi thời
Người đóng góp khác , không nhất thiết phải ghi vào lịch sử sửa đổi, bao gồm:
Alex Lockwood ,
Ben Jackson ,
Bubbles ,
móng vuốt ,
coledot ,
Dana Robinson ,
Daniel Holden ,
Dervin thunk ,
DWC ,
Erci Hou ,
Garen ,
haziz ,
Johan Bezem ,
Jonathan Leffler ,
Joshua Partogi ,
Lucas ,
Lundin ,
Matt K. ,
mossplix ,
Matthieu M. ,
midor ,
Nietzche-jou ,
Norman Ramsey ,
r3st0r3 ,
Ridthyself ,
Robert S. Barnes ,
Steve Summit ,
Tim Ring ,
Tony Bai ,
VMAtm