A. c語言未來的前景(比如就業)是怎麼樣的
作者:匿名用戶
鏈接:https://www.hu.com/question/22666108/answer/22210452
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
整個行業以復雜程度來衡量,是一個大概金字塔的分布,底層是一些簡單的,基於個人和較直觀可理解的應用,如大家經常接觸的手機應用,網頁應用,等。中層是一些小規模團隊合作可以完成的,對性能和規模等方面要求不算太高,大多可以一次成型或者接近完成的項目;在頂端則是一些高復雜度和高要求的項目,例如大型的工業項目,高性能或者高吞吐量項目,和現在很流行的大型互聯網服務等;很多時候復雜性是和規模成正比的。
在這個層次中,越接近低復雜度的項目,對語言的要求越少,更多的語言都可以勝任,更容易被分工和替代,例如可被外包的網站或者ERP等等;在這些項目中,除了少數特殊領域例如嵌入式開發等,C語言幾無立身之地,學習成本高而開發效率低,接近底層帶來的性能等可控性方面的回報得不到體現;
在中層項目中,C語言的優勢也不強,例如知乎,豆瓣這樣的網站,可以用更高級語言開發的更快,更敏捷,更少「機器級細節的干擾」;
只有到了高復雜度項目中,因為對規模、性能等方面的追求,才是C/C++語言一展所長的空間,例如互聯網搜索引擎,高性能科學計算,大型網路游戲伺服器等等。
所以,如果目標是更大比例的程序工程師從業者,C語言學習可以改善對程序、計算機體系的理解,對面試、後續的學習有些幫助,而對直接的工作業績幫助不大;如果目標是高復雜度專業領域的碼農,C/C++還是要好好學一下的,可以翻翻近幾年的網路騰訊股溝畢業生招聘試卷,另外不得不說,自學到脫穎而出的程度,對一個非專業大學生而言,還是很困難的一件事,如果以python等語言上手培養編程的熱情興趣和習慣,能夠快速融入一個工程師社區和團隊,是向更專業工程師攀登之路的一個良好起點。
B. 學編程到底是學C語言、C++、VB、jave中的哪種比較好
問題一:編程語言學哪個好 簡單點說就是兩條路:
一、C\C++\C#(ASP.NET)
二、JAVA(J2SE\J2EE\J2ME\JSP)
走這兩條路都必學的:數據結構、資料庫(SQL或Oracle)
選學:計算機應用基礎、網路基礎、硬體基礎。
C是學習高級語言的基礎;C++主要用於編寫大型軟體核心代碼和匯編一樣,比較難學,不過學好了後,很有前途;C#主要用於編寫一些系統軟體,比如游戲引擎核心代碼,編寫比較簡單,界面比較友好;ASP.NET主要是用C#語言編寫開發網站(B/S架構)。
J2EE是用很廣泛,主要偏向於企業應用軟體和一些桌面系統(C/S架構),計算機平台;第二,J2ME,面向無限領域,主要用於開發手機一些軟體,比如手機游戲。很有潛力的傢伙,看看中國的手機用戶就知道了;JSP主要也是開發網站。
大概就是這些。說得太多了,可能你初次接觸也比較麻煩。兩者根本就沒有一個肯定的說法誰好誰不好。我說下我個人感覺吧。初次涉及Java領域,感覺到Java入門是好像沒有C,C++入門快,工具也沒有什麼Turbo C,Visual C++好用,界面沒有它們友好。什麼JAVA_HOME,CLASSPATH,虛擬機等概念都是初次接觸,學的東西比較多。不過學Java的目前比C的好找工作點,我個人感覺。
不過作為一個高級的程序員,絕對不僅僅只會一門語言的。這就是他們常說羨棚譽的「精一門,通兩門,熟三門...」
至於證書,C好像沒有專門的證書,只是有等級認證。
Java證書一般就是SUN公司的認證了,有權威,含金量高。
Sun的Java認證有多種,SCJA、SCJP、SCJP、SCWCD、SCBCD、SCDJWS、SCMAC、SCEA,想考高級別的要先考低級別的
問題二:現在學哪種編程語言最好 1.零基礎,打算自學編程,應具備哪些的知識?
答:
對於入門階段,對知識水平的要求並不算高,或者說很低,大家都應該聽說過xxx小學生編程如何如何這般這般怎麼樣之類的話題,這里,我們不談長期發展,只談如何入門。首先,我覺得你應該具備計算機的基本操作能力,如果說你連新建一個文件夾或者說從網上下載資料都不會,那麼你應該先買本《windows xx從入門到提高》看,然後再考慮編程這件事,如果你覺得對計算機的基本操作已經熟練後,請繼續向下看。
2.學編程應具備哪些條件?
答:
第一:硬體保證,首先你應該具備一台電腦,不管是筆記本還是台式,也不管性能高低,性能對前期學習編程幾乎無任何影響,就入門來看,操作系統還是首選windwos。
第二:有xx語言的入門本書和凳,紙做的,具體xx語言是哪種語言,後面我們再討論這個問題。雖說現在鋪天蓋地的都是電子書了(保留這句話的確定性),到處是掃描版,還高清呢,但我還是推薦看紙做的書,好處有兩點,其一是便於攜帶,可以隨時翻閱;其二是避免眼疲勞,我不信你一直晚盯著顯示器看電子書眼睛不會酸;還有一點,尊重圖書作者的版權。
第三:時間保證,如果你每天都有一大堆事等著你去處理,先去處理那些事吧,處理完後把剩餘時間劃出一整塊的給編程,進行隨時可能被打斷的學習,在編程這塊,我不認為這是在用功學習,零碎時間去背單詞?應該是個不錯的選擇。
3.你確定要學編程?
答:
這個問題看起來有點多餘,但為什麼要提出這個問題?要知道,編程不是一朝一夕的事,如果你只是一時的沖動,或者僅僅是要完成心目中的某個小工具,並沒有長期寫程序的打算,這樣的話,編程不學也罷,畢竟編程從入門到能獨立寫軟體會有很長的一段路要走,中途一旦放棄就前功盡棄,並且已經浪費了你大把的寶貴時間,實在是得不償失。不過,你盡管吐槽說是這是你的業余愛好,有個愛好也挺好,那麼,繼續兄段往下看吧。
4.如何才能入門?
答:
到底怎樣才能入門?其實,只要你有毅力,慢慢折騰個一年半載,肯定能入門,但寫這篇文章的目的就是為了把這個周期縮短些,不是嗎?所以,下面我就以個人的觀點來談談怎麼才能更快的入門,這里先籠統的介紹下,對於每點,後面單獨介紹。
C1>.去了解計算機的基本組成,計算機的發展史和編程的發展史,看起來和編程沒什麼關系,潛在的影響還是十分大的;
C2>.選擇一門簡單的語言作為入門語嚴;
C3>.學會使用搜索引擎;
C4>.知道如何看書;
C5>.要」像」個高手;
C6.>應具備的學習態度;
4.1:了解這些歷史的意義:
了解一些編程的實質遠比知道如何編程更有意義,不要在編程是怎麼回事的情況下就去學習編程,這樣對你的學習是十分不利的,作為一個編程愛好者,知道計算機的工作原理,這應該是一件再正常不過的事,你難道不想去知道嗎?
4.2>.選擇入門語言:
這個問題在入門階段一直是爭議十分大的問題,n多語言,n多推薦,到最後搞到新手一會聽說這種語言適合新手,於是學習這種語言,一會又有人說xx語言是垃圾、弱爆了,學了也沒用,之類的話,開始推薦你xxx語言,於是新手們又開始學習這種語言,搞到最後,什麼語言都沒搞懂,時間大把大把的流失,熱情消耗殆盡。要解決這個問題,首先要明白一個根本問題,怎樣挑選適合入門的編程語言?我推薦從難度這個角度來考慮,這門語言必須簡單易學,有趣,而且要有一定的熱度,有熱度才能有更多的人一起交流討論,翻開編程語言列表,發現有100多種編程語言,而且這個數還是在不斷增加的,這里我們一起來看下2012年5月份的編程語言排行榜,能進......>>
問題三:學習哪種計算機語言比較好? 主要有兩種可供你選擇:
1,java;
2,C++;
java方面:現在國外幾乎所有大學的計算機教材都採用java,而且,jvm具有非 常強大的跨平台性,可移植性高,作為開源巨頭――sun公司所開發出的語言,有著非常大的潛力,是一種灰常流行的語言。
C++方面:全世界都在使用,全世界都說好,不過部分語法比較復雜(特別是裡面的指針問題),聽說「學會C++,走遍天下」。
其他:C#可以做出非常炫的界面,看你具體想做哪方面的工作,做美工的話C#還是不能放過滴~
學習方面的注意的地方:
if(大學生)
大學畢業前寫夠1W行代碼就行了;
else
每天一百行;cos practice makes perfect
推薦書籍:
英文好的推薦閱讀原版C++primer(中文翻譯出來後有些句子的原意會被曲解,讀英文版還有利於你英文水平的提高,再說遠一點,想搞好計算機的話英文非常重要,因為puter is not made in china~),Code plete;
最後,無論你學什麼,只要認真學了,學好了,都是強大的~
三百六十行行行出狀元~
best regard~
問題四:編程語言中,哪種語言最易學 對於廣大編程初學者來說,存在著這樣普遍的認識:學習程序設計選擇編程語言
很重要,開口閉口就是VisualBasic、Visual C++、Delphi、Power Builder等一些現在比較流行的開發工具。經常看見有初學者問:我學C/C++,究竟是學
VisualC++好,還是學Borland C++ Builder好呢?或者就是要求在Visual Basic和Delphi之間作出選擇。學習程序設計和學習程序設計語言究竟是怎麼一個關系?初學者究竟應該如何取捨呢?就此我們打個簡單的比方:學習程序設計就好比學習射擊,而程序設計語言就對應射擊中的氣槍、手槍、步槍等各種槍械。學習射擊必須要選擇一種槍械,不可能沒有槍還能學好射擊的,也不可能同時學會使用所有的槍械。但是,如果掌握一種槍械的射擊,再學別的也就觸類旁通了。因為在熟悉一種槍械的同時,也學習了射擊技術本身。再學其他的,自然事半功倍。學習程序設計也是一樣,必然要從學習一門程序設計語言開始入手。同時在學習的過程中?
建議:學習程序設計不必苛求一定要從某一種語言入手,可以在Visual Basic、Delphi、Borland C++ Builder或者DOS下的Pascal、Turbo C(或Borland C)中間選擇自己比較容易接受的一種進行學習。從中主要學習的是編程本身的思想,學習的是用程序設計的眼光來看待問題。或許,學習的效果不能馬上看到,但是可以學到扎實的基本功,而這對於將來的進一步發展是有很大好處的。這些基本功包括:
一、強化邏輯分析和建立數學模型的能力
編程的目的是什麼?是要解決現實中的問題。而現實中的問題是用自然語言描述的,目前的計算機對其無法理解。我們要做的就是必須用計算機能理解的方式將問題「告訴」計算機。也就需要我們對現實問題進行邏輯分析,建立合理的數學模型,然後以程序和數據的形式輸入計算機,R、G、B三色份量來各表示一種顏色,對於顏色的處理被轉化為對R、G、B三個整數的處理。我們只要改變這三個整數,就可以將其改變成另外一種顏色。對於其它的現實問題,我們也要像
這樣使其可以被計
二、數據結構和演算法知識
程序設計發展到現在,已經有了一套比較普遍、完整的數學模型(我們稱之為
數據結構)和對應這些數學模型的處理方法(也就是演算法)。目前的程序就是以
此為基礎的。在程序員中間流傳著一句經驗之談:「好的數據結構是程序的一
半。」其重要性可見一斑。作為一個程序員
三、豐富的實踐經驗
程序設計本身就是一門實踐性很強的學科。一個只存在於紙上的程序如同沒
有翅膀的鳥永遠不能飛翔在現實的天空。任由代碼寫得再巧妙,風格再優美,也
只是一張紙上的一連串字元而已。就好比是一份作文練習,或許寫得很好,但是
不交給老師去批閱,和一張白紙又有什麼區別呢?!最後,作為一個程序員還有一點小要求:那就是身體素質要好,能熬夜才行。
Top of Form 1
選其器與善其事――縱談編程工具的選擇選其器相同主題的文章
「工欲善其事,必先利其器」――《論語》。很多人在學習軟體編程時,都希望
選擇一款優秀的編程工具。到書店逛逛,可以看到各種琳琅滿目的編程書籍,可
是你還沒有想好選擇學習什麼編程語言,也就無所適從,不知道該買什麼書看。
要想學好編程,必須認真了解各種語言的特點,找准自己的學習方向。那麼你首
先必須明確你想要做什麼,你所感興趣的是什麼?進一步說就是:你現在想要完
成哪一方面的程序設計,你的程序主要完成的功能是什麼?由此在眾多軟體中,
選擇出適合自己的開發工具。......>>
問題五:現在學什麼編程語言好 C語言玩玩就好,過了指針就難了,JAVA入門簡單,後邊框架太多,C++是王道,但學的人多了,想學的很出彩就難了。計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。如果按語種分,可以分為英文符號語言和漢語符號語言兩類。(典型的如:易語言、C語言)電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的 *** ,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。目前通用的編程語言有兩種形式:匯編語言和高級語言。簡單點說就是兩條路:一、C\C++\C#(ASP.NET)二、JAVA(J2SE\J2EE\J2ME\JSP)走這兩條路都必學的:數據結構、資料庫(SQL或Oracle)選學:計算機應用基礎、網路基礎、硬體基礎。C是學習高級語言的基礎;C++主要用於編寫大型軟體核心代碼和匯編一樣,比較難學,不過學好了後,很有前途;C#主要用於編寫一些系統軟體,比如游戲引擎核心代碼,編寫比較簡單,界面比較友好;ASP.NET主要是用C#語言編寫開發網站(B/S架構)。J2EE是用很廣泛,主要偏向於企業應用軟體和一些桌面系統(C/S架構),計算機平台;第二,J2ME,面向無限領域,主要用於開發手機一些軟體,比如手機游戲。很有潛力的傢伙,看看中國的手機用戶就知道了;JSP主要也是開發網站。
問題六:學哪個編程語言應用最廣泛?還有,,,哪種編程語言學起來比較容易些?? VB~VC~VF~C~C#~C++~JAVA~.NET~這些都是編程 ASP~CGI~PHP~JSP這些是WEB編程。。 雖然都是編程,但編出來的程序可是不一樣的。 目標是什麼?開發?創業?還是去公司上班?還是業余愛好? 如果想業余編小程序,推薦VB~VC~容易上手。簡單。也蠻強大。 如果想學好了去企業上班,推薦C++~~~~~~JAVA之類的大型項目開發。 如果想做網站,就學ASP~CGI~PHP~JSP,這4個就JSP最最最難,先學ASP。 編程語言很多,但是目的都是想寫出好的程序,只要學精了一個就有錢賺,一上來不要要求太高 語言是用來交流溝通的 計算機語言也一樣 多說多練 我推薦你學三種編程語言,因為推薦你學是有原因的。 第一:先學習好C語言,這個是學所有編程語言的基礎。也是將來去考國家證書的必須要考的一門。 第二:學好java,因為java在目前來說,佔領地位是排第一位的。而且工資待遇也不錯。市場需求佔有率高達50%以上。或者學習.NET,因為.NET出來還不算太久,但是就因為是微軟出的東西,所以市場佔有率也已經達到了48%了,況且.NET比java要容易上手。兩者之一,你可以選擇一個。學java就往jsp工程師方向發展,學.NET就往ASP.NET方向發展吧。 第三:順便學一門資料庫的技術。因為開發的時候,難免會要和資料庫打交道。懂總比不懂要好。一般就學SQL就行了。ORACLE一般只適應於大型公司
問題七:哪種編程語言最簡單好學的 c/c++的指針初學者很不習慣。 Python 相對來說自由許多, 而且功能強大。 有google ,IDL 等大公司都在用它,而且可以養成很好的縮進習慣。
應用領域很廣從web(google , douban) 到GUI/console程序(比如大3d軟體BLEND3D),到網路游戲腳本,都可以用。
計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的 *** ,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。
[NextPage]學習編程,從何入手
如果您想學習編程,卻又不知從何入手,那麼您不妨看看下面的幾種學習方案,可能會給您一些啟示吧!
==============================================
方案一 Basic語言 & Visual Basic優點(1)Basic 簡單易學,很容易上手。
(2)Visual Basic 提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。
(3)眾多的控制項讓編程變得象壘積木一樣簡單......>>
問題八:哪種編程語言最實用?哪個最好學適合入門?哪個編程最有前景? 最實用,當屬C++,所有程序員都要通過它來入門,學校里都是用他入門的。
最適合入門,個人認為還是Pascal語言,因為他格式嚴謹,且沒有「指針」這東西有的人靈光一閃就明白,有的人……,只不過有點「後繼無人」了,沒幾個學校在教;當然,C#也不錯,不僅僅沒指針,大部分情況下連創建對象之後的釋放都省了;如果不是JAVA不太適合剛學軟體開發的人,它也不錯,畢竟它一直很火;另外,學校里都是用C++入門,然後學JAVA或者C#,由學生自己選。
最有前景當屬JAVA、PHP和C#,現在是互聯網的天下,還是應該學一學網路開發。
不過,語言只是入門,真正用的時候其實是用別人寫好的對象包,即框架,有實力的人甚至需要自己寫框架,不同開發語言下的框架可不是通用的哦。
現在,我想知道你是想自學軟體開發吧?
先自學C++語法,再從JAVA、PHP、C#里選一個吧,網上有很多自學的材料的,找一找相應語言的學習路線圖,一步一步來。
問題九:現在的編程語言有哪些 哪種最好學有用 初學建議學Python
高手也建議Python
想什麼功能都能做,並只學一門語言,還是Python
其他
系統編程: C, 匯編
企業開發方向: Java, .NET
游戲開發: C++, Lua/Python/Ruby
網站前端: HTML, javascript, CSS
網站後端: PHP, Perl, Python, Ruby, Java, C#
並行並發: erlang, F#, scala
圖形界面: Python, Tk, VB, C#, C++
要高效率編寫程序: Lisp, Ruby, Python
要編寫的程序效率高: C/C++, 匯編
問題十:未來3年程序員學哪種編程語言最好? 未來的時代是AIR的時代。也就是AI人工智慧,物聯網,AR/VR。我只提編程方面的趨勢
其中人工智慧的底層開發方面大多和C,C++關系度比較高。如果是應用層,也還是傳統的網路開發技術,比如PHP,RubyOnRails這些
物聯網的話用的主要是現在常用的技術,H5/CSS3,Nodejs(微軟推薦用於物聯網的技術)等等。還有就是智能硬體的開發,需要你懂C或者C++,匯編入門。
AR/VR C#是現在主流#3D引擎Unity的標准開發語言,值得一學。但是怎麼說,你如果用在移動端的話 IOS里的OC/swift你要選一個,andriod的話要懂java
說了一堆你肯定有點懵逼,我這么說,上面的我都會。。。但我的定位是一個IT Manager。
作為一個初學者或者想要定某個開發方向的,你前端後端選一個,行業趨勢AIR中選一個。
如果你想進階一個大神,學的越多,能力越強,底蘊越多。當到了那一天,我可以再給你詳細列很大一張清單。(現在列太早了。列出來太多你可能會怕太多學不了)
保持一個方向不停前進,最後你會發現,社會需要你是一個全能的人。但你不用從全能做起。
C. 初學者學習C語言,用什麼書好,想用點比較經典的書。
學習C語言不是一朝一夕的事情,但也不需要花費十年時間才能精通。如何讓編程初學者以最小的代價學習並精通C語言是本文的主題。請注意,即使是最小的代價」也絕不是什麼捷徑,而是以最短的時間取得最多的收獲,同時也意味著各位編程初學者需要經歷艱苦的過程。
一、要讀就讀好書,否則不如不讀
所有初學者面臨的第一個問題便是如何選擇教材。好的開始是成功的一半,選擇一本優秀的教材是事半功倍的關鍵因素。
1. 《C程序設計語言》
Kernighan和 RitchiTheCProgramLanguag的《C程序設計語言》堪稱經典中的經典,不過舊版的很多內容都已過時,和現在標准C語言相去甚遠,大家一定要看最新的版本,否則不如不看。
2. 《C語言參考手冊》
即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》十分必要的C語言參考手冊》就是CReferManualC語言標準的詳細描述,包括絕大多數C標准庫函數的細節,算得上是最好的標准C語言的工具書。順便提一句,最新的C程序設計語言》根據C89標准修訂的而《C語言參考手冊》描述的C99標准,二者可能會有些出入,建議按照C99標准學習。
3. 《C和指針》
這本《C和指針》寫得也是相當地不錯,英文名是PointeronC特別地強調指針的重要性,算是本書的一個特點吧。不過這本書並不十分適合初學者,如果你曾經學過C語言,有那麼一些C語言的基礎但又不是很扎實,那麼你可以嘗試一下這本書。相信,只要你理解了指針,C語言便不再神秘。
4.如果你已經看完一本C語言教材,並想要繼續深入學習,那麼我有兩本書推薦給你
《C陷井與缺陷》
首先這本CTrapandPitfal的《C陷井與缺陷》,很薄的一本書,內容非常非常地有趣。不過注意的是,這本書是二十多年前寫的,裡面提到很多C語言的缺陷現在都已被改進,不過能夠了解一些歷史也不是什麼壞事。
《C專家編程》
還有就是可以嘗試挑戰一下ExpertCProgram的《C專家編程》,書如其名,這本書頗具難度,不過一旦你仔細讀完並能透徹理解,便可以放心大膽地在簡歷上寫「精通C語言」
切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果你看不懂,那你一定是缺失了某些必需基礎知識。此時,要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭來學習,才會真正的事半功倍。
二、Unix/Linux還是Window這是個很大的問題
不同的編程環境會造就出不同思維的程序員。Window程序員大多依賴集成開發環境,比如VisualStudio而Unix程序員更加鍾愛Makefil與控制台。顯而易見,集成開發環境更容易上手,Window上學習C語言,只需要會按幾個基本的VisutC++工具欄按鈕就可以開始寫Hello,World!而在Unix下,需要一些控制台操作的基本知識。有人也許認為Unix環境更簡潔,但習慣的力量是很大的大家都很熟悉 Window基本操作,而為了學習C語言去專門裝一個Unix系統,似乎有點不劃算。
對於一個只懂得Window基本操作、連 DOS什麼都不知道的新手而言,盡快做一些有趣而有意義的事情才是最重要的用C語言寫一個小程序遠比學習lscat等命令有趣,況且我要專注於C語言本身,就不得不暫時忽略一些東西,比如編譯鏈接的過程、Makefil寫法等等等等。
所以我建議初學者應該以VisualC++6.0不是VisualC++.NET或者DevC++作為主要的學習環境,而且千萬不要在IDE使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的VisualC++6.0使用很方便,調試也很直觀,但其默認的編譯器對C標準的支持並不好,而DevC++使用gcc編譯器,對C99標准都支持良好。使用順帶提一下,很多大學的C語言課程還在使用TurboC2.0作為實驗環境,這是相當不可取的原因其一是TC2.0對C標准幾乎沒有支持,其二是TC2.0編譯得到程序是16位的這對今後理解32位的程序會造成極大的困擾(當然,用djgpp之類的東西可以使TC2.0編譯出32位程序,不過那過於復雜了
等你學完一本C語言的教材,一定要轉向Unix平台繼續學習,幾乎所有的C語言高級教程都是基於Unix平台的比如《C專家編程》轉變的過程是痛苦的需要面對的各種紛繁復雜的命令,完全不同於Window平台的思考方式,但是這種痛苦是值得的Unix與C共生的Unix思考方式和習慣更加符合C語言的思考方式和習慣。Unix下,可以找到無數優秀的源代碼供你盡情閱讀,可以方便地查看某個庫函數的聯機手冊,還可以看到最優秀的代碼風格(說到代碼風格,會專門寫一篇文章詳細敘述)
歸結起來就是一句話:編程初學者初學C語言,建議使用Window系統和集成開發環境,准備向「高手」方向努力時,請先轉向Unix平台。
D. 現在 C語言用什麼編程軟體比較好
感覺vs有很多獨特的理念,尤其是在debug版本中會做許多有用的事,但是感覺vc的c語言編譯器不支持很多目前gcc支持的功能
除了vc之外剩下的軟體用的編譯器基本上都是gcc
小的軟體像codeblocks,免費而且跨平台,但是有一點不喜歡是只有建立工程才能調試
還有在windows下的收費軟體cfree,也是十分小巧,除了工程管理做的不怎麼樣其他都不錯,適合寫小程序
大一點的軟體有eclipse和bcb(這個也是用的自己的編譯器),除了太大也很不錯
還是像各種文本編輯器+gcc+gdb,個人覺得這是非常牛的行為
總之lz想知道什麼軟體比較好不如自己試試,總會找到喜歡的軟體的
E. 想自學C語言,大家幫幫忙
去"天天bt"上下載個csf視頻教學資源,
http://www.ttbt.cn/down.asp?id=17074&no=1
邊看教學邊學不錯.
另外,我覺得譚浩強編的"c語言程序設計"那本書不錯.
不過,如果你想成為好的程序員,建議你修好離散數學,編譯原理,線性代數等課程
C語言學習心得
前言
指針,一直被認為是C語言中的精華。只有掌握了指針,你才能說你學會了C語言。
相當初,我是把指針這一章足足看了三遍才算是「學了這一章」下面的文字是阿容
寫的,對我學習C語言的指針幫助很大。好東西不敢獨享,今天把它貼出來,希望
大家也會有所幫助。
第一章。指針的概念
指針是一個特殊的變數,它裡面存儲的數值被解釋成為內存里的一個地址。
要搞清一個指針需要搞清指針的四方面的內容:指針的類型,指針所指向的
類型,指針的值或者叫指針所指向的內存區,還有指針本身所佔據的內存區。讓
我們分別說明。
先聲明幾個指針放著做例子:
例一:
(1)int *ptr;
(2)char *ptr;
(3)int **ptr;
(4)int (*ptr)[3];
(5)int *(*ptr)[4];
如果看不懂後幾個例子的話,請參閱我前段時間貼出的文章<<如何理解c和c
++的復雜類型聲明>>。
1。 指針的類型。
從語法的角度看,你只要把指針聲明語句里的指針名字去掉,剩下的部分就
是這個指針的類型。這是指針本身所具有的類型。讓我們看看例一中各個指針的
類型:
(1)int *ptr; //指針的類型是int *
(2)char *ptr; //指針的類型是char *
(3)int **ptr; //指針的類型是 int **
(4)int (*ptr)[3]; //指針的類型是 int(*)[3]
(5)int *(*ptr)[4]; //指針的類型是 int *(*)[4]
怎麼樣?找出指針的類型的方法是不是很簡單?
2。指針所指向的類型。
當你通過指針來訪問指針所指向的內存區時,指針所指向的類型決定了編譯
器將把那片內存區里的內容當做什麼來看待。
從語法上看,你只須把指針聲明語句中的指針名字和名字左邊的指針聲明符
*去掉,剩下的就是指針所指向的類型。例如:
(1)int *ptr; //指針所指向的類型是int
(2)char *ptr; //指針所指向的的類型是char
(3)int **ptr; //指針所指向的的類型是 int *
(4)int (*ptr)[3]; //指針所指向的的類型是 int()[3]
(5)int *(*ptr)[4]; //指針所指向的的類型是 int *()[4]
在指針的算術運算中,指針所指向的類型有很大的作用。
指針的類型(即指針本身的類型)和指針所指向的類型是兩個概念。當你對C越
來越熟悉時,你會發現,把與指針攪和在一起的「類型」這個概念分成「指針的
類型」和「指針所指向的類型」兩個概念,是精通指針的關鍵點之一。我看了不
少書,發現有些寫得差的書中,就把指針的這兩個概念攪在一起了,所以看起書
來前後矛盾,越看越糊塗。
3。 指針的值,或者叫指針所指向的內存區或地址。
指針的值是指針本身存儲的數值,這個值將被編譯器當作一個地址,而不是
一個一般的數值。在32位程序里,所有類型的指針的值都是一個32位整數,因為
32位程序里內存地址全都是32位長。
指針所指向的內存區就是從指針的值所代表的那個內存地址開始,長度為si
zeof(指針所指向的類型)的一片內存區。以後,我們說一個指針的值是XX,就相
當於說該指針指向了以XX為首地址的一片內存區域;我們說一個指針指向了某塊
內存區域,就相當於說該指針的值是這塊內存區域的首地址。
指針所指向的內存區和指針所指向的類型是兩個完全不同的概念。在例一中
,指針所指向的類型已經有了,但由於指針還未初始化,所以它所指向的內存區
是不存在的,或者說是無意義的。
以後,每遇到一個指針,都應該問問:這個指針的類型是什麼?指針指向的
類型是什麼?該指針指向了哪裡?
4。 指針本身所佔據的內存區。
指針本身佔了多大的內存?你只要用函數sizeof(指針的類型)測一下就知道
了。在32位平台里,指針本身占據了4個位元組的長度。
指針本身占據的內存這個概念在判斷一個指針表達式是否是左值時很有
============================
7月11日
c語言心得一
2.數據輸出
c語言不提供輸入輸出語句,輸入輸出操作是由c的庫函數完成。但要包含頭文件stdio.h。
putchar( ) 向終端輸出一個字元
printf( )的格式字元:
① d格式符 用來輸出十進制整數
%d 按整型數據的實際長度輸出
%md 使輸出長度為m,如果數據長度小於m,則左補空格,如果大於m,則輸出實際長度
%ld 輸出長整型數據
② o格式符 以八進制形式輸出整數
③ x格式符 以十六進制形式輸出整數
④ u格式符 用來輸出unsigned型數據,以十進制形式輸出
⑤ c格式符 用來輸出一個字元
⑥ s格式符 輸出一個字元串
%s 輸出實際長度字元串
%ms 輸出的串佔m列,如果串長度小於m,左補空格,如果大於m,實際輸出
%-ms輸出的串佔m列,如果串長度小於m,右補空格,
%m.ns 輸出佔m列,但只取字元串中左端n個字元並靠右對齊
%-m.ns m、n含義同上,靠左對齊,如果n>m,則m自動取n值
⑦ f格式符 以小數形式輸出實數
%f 整數部分全部輸出,小數部分輸出6位
%m.nf 輸出數據共佔m列,其中有n位小數。如果數值長度小於m,左補空格
%-m.nf 同上,右補空格
⑧ e格式符 以指數形式輸出實數
%e 系統指定6位小數,5位指數(e+002 )
⑨ g格式符 輸出實數,根據數值大小,自動選f格式或e格式
3.數據輸入
getchar( ) 從終端輸入一個字元
scanf( 格式控制,地址列表) 標准C scanf中不使用%u,對於unsigned型數據,以%d或%o或%x輸入。%後的*,用來跳過它相應的數據。輸入數據時不能規定精度如scanf( "%7.2f", &a );是不合法的。
部分字元串處理函數
puts(字元數組) 將一個字元串輸出到終端。
gets(字元數組) 從終端輸入一個字元串到字元數組,並且得到一個函數值,為該字元數組的首地址
strcat(字元數組1,字元數組2) 連接兩個字元數組中的字元串,數組1必須足夠大。
Strcpy(字元數組1,字元串2) 將字元串2拷貝到字元數組1中。
Strcmp(字元串1,字元串2) 比較字元串,相等返回0,字元串1>字元串2,返回正數,小於返回負數。
Strlen(字元數組) 求字元串長度。
Strlwr( 字元串) 將字元串中的大寫字母轉換成小寫
Strupr( 字元串) 將字元串中的小寫字母轉換成大寫
以上是一些比較常用的字元串處理函數。
動態存儲變數與靜態存儲變數
從變數值存在的時間(生存期)角度來分,可分為靜態存儲變數和動態存儲變數。靜態存儲指在程序運行期間給變數分配固定的存儲空間,動態存儲指程序運行期間根據需要動態的給變數分配存儲空間。
C語言中,變數的存儲方法分為兩大類:靜態存儲類和動態存儲類,具體包括:自動的(auto),靜態的(static),寄存器的(register),外部的(extern)。
1) 局部變數的存儲方式
函數中的局部變數如不作專門說明,都之auto的,即動態存儲的,auto可以省略。局部變數也可以定義為static的,這時它在函數內值是不變的。靜態局部變數如不賦初值,編譯時系統自動賦值為0,動態局部變數如不賦初值,則它的值是個不確定的值。C規定,只有在定義全局變數和局部靜態變數時才能對數組賦初值。為提高執行效率,c允許將局部變數值放在寄存器中,這種變數叫register變數,要用register說明。但只有局部動態變數和形式參數可以作為register變數,其它不行。
2) 全局變數的存儲方式
全局變數在函數外部定義,編譯時分配在靜態存儲區,可以在程序中各個函數所引用。多個文件的情況如何引用全局變數呢?假如在一個文件定義全局變數,在別的文件引用,就要在此文件中用extern對全局變數說明,但如果全局變數定義時用static的話,此全局變數就只能在本文件中引用了,而不能被其它文件引用。
3) 存儲類別小結
從作用域角度分,有局部變數和全局變數
局部變數:自動變數,即動態局部變數(離開函數,值就消失)
靜態局部變數(離開函數,值仍保留)
寄存器變數(離開函數,值就消失)
(形參可定義為自動變數和寄存器變數)
全局變數:靜態全局變數(只限本文件引用)
全局變數(允許其它文件引用)
從存在的時間分,有靜態存儲和動態存儲
動態存儲:自動變數(本函數內有效)
寄存器變數(本函數內有效)
形參
靜態存儲:靜態局部變數(函數內有效)
靜態全局變數(本文件內有效)
全局變數(其它文件可引用)
從變數值存放的位置分
靜態存儲區:靜態局部變數
靜態全局變數
全局變數
動態存儲區:自動變數和形參
寄存器內:寄存器變數
7. 內部函數和外部函數
內部函數:只能被本文件中的其它函數調用,定義時前加static,內部函數又稱靜態函數。
外部函數:可以被其它文件調用,定義時前加extern,如果省略,則隱含為外部函數,在需要調用此函數的文件中,一般要用extern說明。
c編譯系統在對程序進行通常的編譯之前,先進行預處理。c提供的預處理功能主要有以下三種:1)宏定義 2)文件包含 3)條件編譯
1. 宏定義
不帶參數的宏定義
用一個指定的標識符來代表一個字元串,形式:#define 標識符 字元串
幾點說明:
1) 宏名一般用大寫
2) 宏定義不作語法檢查,只有在編譯被宏展開後的源程序時才會報錯
3) 宏定義不是c語句,不在行末加分號
4) 宏名有效范圍為定義到本源文件結束
5) 可以用#undef命令終止宏定義的作用域
6) 在宏定義時,可以引用已定義的宏名
帶參數的宏定義
定義形式:#define 宏名(參數表) 字元串
這和函數有些類似,但他們是不同的:
1) 函數調用時,先求實參表達式值,再代入形參,而宏只是簡單替換,並不求值
2) 函數調用是在程序運行時分配內存的,而宏展開時並不分配內存,也沒有返回值的概念
3) 對函數中的實參和形參都要定義類型,而且要求一致,宏名無類型,其參數也沒有類型。
4) 函數只有一個返回值,而宏可以得到幾個結果
5) 宏替換不佔運行時間,只佔編譯時間,而函數調用占運行時間
2. 文件包含處理
#include "文件1" 就是將文件1的全部內容復制插入到#include位置,作為一個源文件進行編譯。
在#include命令中,文件名可以用" "也可以用< >,假如現在file1.c中包含file2.h文件," "表示系統先在file1.c所在目錄中找file2.h,如果找不到,再按系統指定的標准方式檢索目錄,< >表示系統直接按指定的標准方式檢索目錄。所以用" "保險一點。
3. 條件編譯
條件編譯指不對整個程序都編譯,而是編譯滿足條件的那部分。條件編譯有以下幾種形式:
1)#ifdef 標識符
程序段1
#else
程序段2
#endif
它的作用:當標識符在前面已經被定義過(一般用#define),則對程序段1編譯,否則對程序段2編譯。
2)#ifndef 標識符
程序段1
#else
程序段2
#endif
它的作用和#ifdef相反,當標識符沒被定義過,對程序段1編譯,否則對程序段2編譯。
3)#if 表達式
程序段1
#else
程序段2
#endif
它的作用:當表達式值為真(非0)時,對程序段1編譯,否則對程序段2編譯。
http://spaces.msn.com/lxj5816778/Blog/cns!1pmxrkmy9J0DF4J21zFuHFzQ!134.entry
F. C語言0基礎應該看什麼書
c語言零基礎應該看譚浩強老師編寫的《c語言程序設計》第三版,該書是學習C語言程序設計的基礎教程,內容包括C語言概述、順序結構程序設計、分支結構程序設計、循環結構程序設計、數組、函數、指針、結構體、文件等。該書以程序設計思想的掌握為主線,以編程應用為驅動,通過案例和問題引入內容,由淺入深,循序漸進,重點訓練學生的編程思想,能夠充分提高學生的編程能力,鍛煉學生的工程能力和創新能力,並鼓勵學生利用所學C語言知識解決專業的具體問題。
G. 學習c語言看什麼書好
最近很多人都在問如何學習編程。我覺得學習編程最重要的是入門,如果你入門的時候有一個好的方法和思路,打下比較扎實的基礎,對今後的編程工作是很有益處的。即使在學習新的編程語言也無所謂,因為它們有很多相通之處,可以相互借鑒。
我認為可以先學習一下pascal,這個語言比較嚴謹,適合初學者。pascal它被稱為教學語言,結構嚴謹,不像C語言那麼靈活,易於理解和學習。
然後可以繼續學習C語言,這個語言比較靈活。有了pascal的基礎,在進行C語言編程就不會因為C語言的靈活而有問題
。後面的就可以學習VC什麼的了。
C語言的書推薦譚浩強的,比較好。
我當時學習pascal和C語言的時候是將書後的習題都做了一遍,感覺效果很好。
當然了,學習什麼語言也要看你具體准備從事什麼行業。例如你要進行嵌入式開發,C就是很好的選擇,如果是Windows開發,那麼VC就不錯。還有資料庫方面的開發、網路開發等等。不同的語言適合不同的方面。要看自己的選擇的,呵呵
。
還有很多人說自己的基礎很差,甚至中學畢業什麼的。其實這個並不重要,比較說英語,在計算機語言里所用到的單詞量很少,而且都是常用詞,經常使用就記住了。當然,如果你要看原文資料或者幫助的話,專業詞彙比較多,不過在金山詞霸的幫助下,經常看,也是沒什麼大的問題的。至於數學什麼的,其實數學只是培養你一個邏輯思維能力,在初學編程的時候影響不是很大。況且,作為一個基礎編程人員來說,上面還有系統分析師、項目經理,他們會把需求分析、概要設計和詳細設計做好的,你只要按照文檔寫代碼就OK了。不過,要上更上一步的話,其他基礎知識就非常重要了,畢竟你不能寫一輩子代碼。
在你學習好C語言以後,個人建議好好學習一下數據結構和軟體工程。這兩門對你的水平提高都是很有幫助的。特別是軟體工程,它能夠使你按照科學的工程方法進行軟體開發,對今後的發展很有好處。
只是一家之言,有不到之處,還望見諒
H. 學c語言有前途嗎
C語言是基礎,作用不太大。不過學會了C語言,學C++不會那麼困難,C語言主要是面向底層的語言,C++才是面向對象的語言,C++用於編寫計算機程序很比較容易和方便的,C語言很 麻煩,你幾乎找不到用C語言編寫的應用程序,C語言對於寫驅動和嵌入式相當好,比匯編語言好記。看你是要學來干什麼了。而且現在幾乎工科的學生都會學習C語言,所以會C語言並不會有什麼優勢,像電氣的學生基本都會學,計算機的學生C語言更是基礎課,專科更是了,專科里,電氣方向也是學的,電子方向的也要學,計算機也要學,很普遍的課程。對C語言有要求的公司,基本都是嵌入式的公司,即做手機啊,無人機啊,或者工控硬體的,需要寫驅動都需要掌握C語言,另外普遍也要會匯編語言,VB,C++等,C++主要是有些玩具,或者工控設備需要電腦界面控制的,編寫這類軟體需要會C++,大一點的公司會把硬體驅動和軟體分開,小的公司就需要你都會,這樣就能節約成本。計算機程序員的話,C語言是基礎,但是基本不以C語言會不會,好不好作為評判標准,基本都是以C++,JAVA等能直接快速編寫應用程序的語言為主,如果很6的話,工資當然就高啦。