我成爲面向對象代碼時代的專業程序員,並擁有多年的C++編程經驗。我經常從事大型項目,這些項目有多年的遺留代碼,混合使用C++和c。 我對純粹的c系統部分的工作感覺不太舒服。從C++編程開始,我理解了所有的C語法,但是關於如何在沒有對象的情況下組織一個複雜的C程序還有一個漏洞,以及如何管理我想填充的內存的最佳實踐。我在學習java程序員之後學習了C++,並且認爲更多的c會讓我成爲更好的C++程序員,並且少了一點java被翻譯成C++程序員是否有任何教程幫助精通C++程序員學習c?
6
A
回答
1
在組織方面,望着POSIX APIs,尤其是pthreads會給你如何組織的C代碼是個好主意。良好的C項目組織的基本規則是:
- 不要暴露你的結構。僅使用不透明類型。
- 使用庫和數據類型名稱作爲函數名稱的前綴。
- 爲分配/構建和銷燬/釋放提供「創建」和「銷燬」功能。
- 將不透明類型作爲第一個參數傳遞給在該類型上運行的函數。
- 使用C或C++實現C API(這取決於您)。顯然,在那裏使用不透明的類型。
0
調查大量使用指針的程序因爲無論如何,低級結構在我看來是一個好的開始。它也取決於爲什麼構建的程序。您是否試圖在嵌入式rtos板或微控制器系統上編寫C代碼?
1
我和你基本上在同一條船上(雖然經驗不足,而且我從Python開始而不是Java開始),最適合我的是坐下來閱讀Kernighan和Ritchie。由於您熟悉語法,因此您可以瀏覽本書的前半部分,但您一定會對低級內存管理有更好的理解。
閱讀Linux內核源代碼中與內存管理有關的部分也有幫助,但不是因爲內心的疲憊或輕鬆無聊。
1
1
擴展在another answer,一種方法是隻寫C.這是大多數庫我的行爲交互的方式(例如,GNOME堆幾乎完全面向對象的C,主要是基於GObject的面向對象的庫使它更容易)。你可以把它看作C++而不用一些語法糖。
你最終像
/* in project NewStuff; namespace is ns */
ns_foo_t *ns_foo_new();
void ns_foo_delete (ns_foo_t *);
int ns_foo_make_waffles (ns_foo_t *this, int no_of_guests);
int main() {
ns_foo_t *my_foo = ns_foo_new();
ns_foo_make_waffles (my_foo, 1);
ns_foo_delete (my_foo);
}
的API相當於幾乎完全以
class Foo {
public:
Foo() { /* whatever */ }
int make_waffles (int no_of_guests) {}
};
int main() {
Foo *my_foo = new Foo();
my_foo->make_waffles (1);
delete my_foo;
}
1
你也可以檢查出The C Programming Language ANSI C Edition由Kernighan和Ritchie寫的。是的,它是舊的,但它只有大約200頁的時鐘,覆蓋整個語言以及標準庫。
相關問題
- 1. 向程序員學習C
- 2. 學習C++需要關於程序任務的幫助
- 3. 什麼是最有幫助的OpenSocial教程和視頻學習?
- 4. 學習彙編語言如何幫助我調試C程序?
- 5. C++程序員學習資源JS
- 6. 學習PHP程序員的C#或VB?
- 7. 練習建議,以幫助學習C#中的多線程#
- 8. 有想學習Perl的Ruby程序員的教程嗎?
- 9. Chrome擴展程序幫助學習
- 10. 有經驗的C#用戶學習C++的教程
- 11. 基本排序問題 - C# - (Java程序員學習C#)
- 12. iptv學習教程
- 13. 爲C#程序員學習C++的最佳場所
- 14. C#Microsoft Office Developer幫助,教程,示例
- 15. C TUI開發 - 幫助/教程?
- 16. .NET程序員學習Objective C和Cocoa有多難?
- 17. 爲C++程序員學習基於網絡的編程
- 18. 通用幫助程序方法c#
- 19. 這個C和PHP程序員如何學習Ruby和Rails?
- 20. 幫助C++程序分析
- 21. iOS,學習HTTPS教程://與ATS溝通
- 22. C/C++程序員的數學資源
- 23. 幫助學習asp.net
- 24. 學習Python之前是否值得學習C/C++?
- 25. 學習rails的教程
- 26. 學習指南/教程html5
- 27. 針對C#程序員的C++調試幫助
- 28. 是否有任何指導來協助希望學習c#和.net的經驗豐富的PHP開發人員?
- 29. 學習C程序設計資源
- 30. 學習pycURL有什麼好的教程?
有史以來的教程,我發現似乎認爲你是一個C程序員移動到C + +。當然,我不能成爲唯一希望更好地理解c的面向對象的程序員。 – 2009-08-03 00:09:29
我想如果你寫幾個中型的C程序,將教你如何避免麻煩。實際上,以任何語言惹麻煩都是一種寶貴的學習方式。像觸摸熱的東西。 – Nosredna 2009-08-03 00:10:45
在這種情況下,StackOverflow已經存在幾個問題(和一些C#移動到C問題)。從我的本地c演講者大多在C++有利位置的功能,我雖然看到了幾件看起來不錯的建議。他們可能值得追捕。 – dmckee 2009-08-03 00:29:40