[問題] 如何用C思考?

看板C_and_CPP作者 (LaPass)時間12年前 (2012/04/27 22:48), 編輯推噓15(15030)
留言45則, 19人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 預計是在iOS上使用objective c 但是目前正在看C 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) C Primer Plus 5/e Ptt Google etc 問題(Question): 快速翻完C Primer可是不知道該怎麼去用C寫東西 餵入的資料(Input): 書一本 預期的正確結果(Expected Output): 學會用C寫具有複雜度的程式的辦法 錯誤結果(Wrong Output): 腦筋一片空白 程式碼(Code):(請善用置底文網頁, 記得排版) int brain = 1/0; 補充說明(Supplement): 自己學過Java、C#、PHP、javascript,學程式語言的速度算快 因為被公司要求寫iPhone App的關係,現在開始學objective c 稍微找了一下資料,知道objective c是建立在C的基礎上去擴充的 因此想先去把C給看一看,以及補一補,像是指標之類的,低階比較會用到的概念 於是我找了C Primer來看...... 可是快速翻完後..... 發現少了非常多的東西。 例如..... 沒throw new exception之類的東西 呃..... 沒防止犯錯的機制,全靠大腦除錯就是了? 沒class、interface、物件導向之類的 雖然很不方便,這還可以接受..... 至少struct加上指標還能湊合著用 只是Method的話,想不太到變通的方法 沒Overload..... 好吧,函式的名稱可能會越取越奇怪 但還算是小問題 沒有委派、函數指標、反射、Lamba這種東西 不知道是不是我看太快漏掉 總覺得「同時」沒有物件導向跟函數指標很不可思議..... 難道,像是 「如果失火,就去滅火 下雨 收衣服 打雷 躲起來 ....... 」 像這種,在什麼狀況下做什麼事的判斷式,都只能用if else switch去寫嗎? 這還真是惡夢..... 有變通的方法嗎? 還有,覺得少掉的另外一個重要的東西是執行緒 C Primer裡面看不到跟執行緒有關的章節..... C關於執行緒的部分,是不是要從作業系統的SDK去找? 雖然問題很模糊 但是我想問,C寫複雜的東西時,到底該怎麼設計? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.233.153.91

04/27 22:49, , 1F
善用struct+function pointer可以把C寫得很物件
04/27 22:49, 1F

04/27 22:52, , 2F
防止犯錯C應該只有檢查回傳值的方式可以用,真的很麻煩
04/27 22:52, 2F

04/27 22:52, , 3F
去下載ooc這本電子書來看吧,
04/27 22:52, 3F

04/27 22:52, , 4F

04/27 22:53, , 5F
執行緒確實要由OS提供的函式來用,C本身並沒有
04/27 22:53, 5F

04/27 22:54, , 6F
那個.. 應該叫lambda不是lamda.. (小戳
04/27 22:54, 6F

04/27 22:54, , 7F
ooc.. 地獄之書..
04/27 22:54, 7F

04/27 22:54, , 8F
對了,C++11有lambda可以用,還挺有趣的 (但C沒有)
04/27 22:54, 8F

04/27 22:56, , 9F
地獄之書...!? 是哪裡很恐怖啊?
04/27 22:56, 9F

04/27 22:59, , 10F
看到第二章你會覺得,還是乖乖學C++好了,它和善多了。
04/27 22:59, 10F

04/27 22:59, , 11F
然後為了達成抽像和其他目的,會有一堆void*,typedef.
04/27 22:59, 11F

04/27 23:05, , 12F
你直接看obj-c就好,iOS真的用純C的機會不大
04/27 23:05, 12F

04/27 23:06, , 13F
我也覺得不需要看純C耶...
04/27 23:06, 13F

04/27 23:07, , 14F
有問題歡迎到MacDev問 XD
04/27 23:07, 14F

04/27 23:13, , 15F
C 的話,請從頭到尾都用指標思考會比較好喔
04/27 23:13, 15F

04/27 23:36, , 16F
我在C Primer上怎麼翻不到函數指標 orz....
04/27 23:36, 16F

04/27 23:36, , 17F
覺得那個超級重要的...
04/27 23:36, 17F

04/27 23:39, , 18F
純C是目前是先看一看,因為低階的東西似乎都是用C,先看個
04/27 23:39, 18F

04/27 23:40, , 19F
觀念。
04/27 23:40, 19F

04/27 23:40, , 20F
function pointer的簡單用法 http://ideone.com/Qu11w
04/27 23:40, 20F

04/27 23:51, , 21F
市面上還是有專門介紹obj-c語言的書,應該也都會提到它的
04/27 23:51, 21F

04/27 23:51, , 22F
特性。
04/27 23:51, 22F

04/27 23:59, , 23F
obj-c其實比較像smalltalk&ruby
04/27 23:59, 23F

04/28 00:00, , 24F
現在有了ARC之後更不像C了
04/28 00:00, 24F

04/28 00:33, , 25F
C有function pointer啊 (推K&R)
04/28 00:33, 25F

04/28 00:54, , 26F
喔喔!我剛好有寫過篇簡化ooc的心得喔 :)
04/28 00:54, 26F

04/28 00:55, , 27F
04/28 00:55, 27F

04/28 00:56, , 28F
不過跟C++比起來的話,ooc寫起來還是不太舒服的...
04/28 00:56, 28F

04/28 01:01, , 29F
OOC很可愛呀~:)
04/28 01:01, 29F

04/28 01:59, , 30F
我以為都用下半身思考
04/28 01:59, 30F

04/28 02:06, , 31F
不用看什麼OOC了,既然要寫iOS app就直接學obj-c吧
04/28 02:06, 31F

04/28 02:07, , 32F
obj-c提供exception和class,至於lambda要自己想辦法
04/28 02:07, 32F

04/28 02:07, , 33F
thread就用系統提供的NSThread
04/28 02:07, 33F

04/28 02:57, , 34F
試著寫了一下下,有了function pointer就沒什麼好怕了~
04/28 02:57, 34F

04/28 10:38, , 35F
供參考www.iteye.com/topic/94540,不過反正ObjC有內建
04/28 10:38, 35F

04/28 11:03, , 36F
再怎麼樣都比C++/CX可愛...lol
04/28 11:03, 36F

04/28 11:27, , 37F
奇怪 我算是特例嗎? C++真是越看越醜越看越討厭耶...
04/28 11:27, 37F

04/29 00:16, , 38F
我比較想知道的是在C裏要用什麼妙技可以做出像C++ dtor而
04/29 00:16, 38F

04/29 00:17, , 39F
不是用goto來解決
04/29 00:17, 39F

04/29 00:20, , 40F
gcc有特別的attribute,但用標準語法做出來的比較通用
04/29 00:20, 40F

04/29 00:23, , 41F
如果是區域物件,再怎樣也要自己在離開 scope 時調用 dtor
04/29 00:23, 41F

04/29 00:24, , 42F
而 C++ 是編譯器自動判斷,不需要手動,這差很大
04/29 00:24, 42F

04/29 06:14, , 43F
剛才查到的 http://ppt.cc/,XA5 最後用do/while那招不錯
04/29 06:14, 43F

04/29 06:15, , 44F
可以頂著用
04/29 06:15, 44F

04/30 16:52, , 45F
c的例外處理比較是依靠goto.
04/30 16:52, 45F
文章代碼(AID): #1Fch6pFZ (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Fch6pFZ (C_and_CPP)