C語言是結構化和模塊化的面向過程的語言,C++語言是面向對象的程序設計語言。C++語言是C語言的超集,也就是說學會了C++,你其實已經把C語言學會了。至於說有什麼區別,應該說是編程思想的區別吧,C是基於過程的,強調的是程序的功能,以函數(功能)為中心。C++是面向對象的,強調程序的分層、分類,以抽象為基礎,進行對象的定義與展示,即程序設計。具體說來話長。建議你學習C++的時候,學會用面向對象的方式思考和編程。現在在開發大項目的時候,都是應用面向對象的分析和設計的技術。
C語言與C++的區別有很多:
1,全新的程序程序思維,C語言是面向過程的,而C++是面向對象的。
2,C語言有標準的函數庫,它們鬆散的,只是把功能相同的函數放在一個頭文件中;而C++對於大多數的函數都是有集成的很緊密,特別是C語言中沒有的C++中的API是對Window系統的大多數API有機的組合,是一個集體。但你也可能單獨調用API。
3,特別是C++中的圖形處理,它和語言的圖形有很大的區別。C語言中的圖形處理函數基本上是不能用在中C++中的。C語言標准中不包括圖形處理。
4,C和C++中都有結構的概念,但是在C語言中結構只有成員變數,而沒成員方法,而在C++中結構中,它可以有自己的成員變數和成員函數。但是在C語言中結構的成員是公共的,什麼想訪問它的都可以訪問;而在VC++中它沒有加限定符的為私有的。
4,C語言可以寫很多方面的程序,但是C++可以寫得更多更好,C++可以寫基於DOSr程序,寫DLL,寫控制項,寫系統。
5,C語言對程序的文件的組織是鬆散的,幾乎是全要程序處理;而c++對文件的組織是以工程,各文件分類明確。
6,C++中的IDE很智能,和VB一樣,有的功能可能比VB還強。
7,C++對可以自動生成你想要的程序結構使你可以省了很多時間。有很多可用的工具如加入MFC中的類的時候,加入變數的時候等等。
8,C++中的附加工具也有很多,可以進行系統的分析,可以查看API;可以查看控制項。
9,調試功能強大,並且方法多樣
Java中對內存的分配是動態的,它採用面向對象的機制,採用運算符new為每個對象分配內存空間,而且,實際內存還會隨程序運行情況而改變.程序運行中,每個, Java系統自動對內存進行掃描,對長期不用的空間作為」垃圾」進行收集,使得系統資源得到更充分地利用.按照這種機制,程序員不必關注內存管理問題,這使Java程序的編寫變得簡單明了,並且避免了了由於內存管理方面的差錯而導致系統出問題.而C語言通過malloc()和free()這兩個庫函數來分別實現分配內在和釋放內存空間的,C++語言中則通過運算符new和delete來分配和釋放內存.在C和C++這仲機制中,程序員必須非常仔細地處理內存的使用問題.一方面,如果對己釋放的內存再作釋放或者對未曾分配的內存作釋放,都會造成死機;而另一方面,如果對長期不用的或不再使用的內存不釋放,則會浪費系統資源,甚至因此造成資源枯竭.
2
Java不在所有類之外定義全局變數,而是在某個類中定義一種公用靜態的變數來完成全局變數的功能.
3
Java不用goto語句,而是用try-catch-finally異常處理語句來代替goto語句處理出錯的功能.
4
Java不支持頭文件,面C和C++語言中都用頭文件來定義類的原型,全局變數,庫函數等,這種採用頭文件的結構使得系統的運行維護相當繁雜.
5
Java不支持宏定義,而是使用關鍵字final來定義常量,在C++中則採用宏定義來實現常量定義,這不得於程序的可讀性.
6
Java對每種數據類型都分配固定長度.比如,在Java中,int類型總是32位的,而在C和C++中,對於不同的平台,同一個數據類型分配不同的位元組數,同樣是int類型,在PC機中為二位元組即16位,而在VAX-11中,則為32位.這使得C語言造成不可移植性,而Java則具有跨平台性(平台無關性).
7
類型轉換不同.在C和C++中,可通過指針進行任意的類型轉換,常常帶來不安全性,而在Java中,運行時系統對對象的處理要進行類型相容性檢查,以防止不安全的轉換.
8
結構和聯合的處理.在C和C++中,結構和聯合的所有成員均為公有,這就帶來了安全性問題,而在Java中根本就不包含結構和聯合,所有的內容都封裝在類裡面
9
Java不再使用指針.指針是C和C++中最靈活,也最容易產生錯誤的數據類型.由指針所進行的內存地址操作常會造成不可預知的錯誤,同時通過指針對某個內存地址進行顯式類型轉換後,可以訪問一個C++中的私有成員,從而破壞安全性.而Java對指針進行完全地控制,程序員不能直接進行任何指針操作.
❷ c++和java寫演算法哪個好用一些,c++ stl 能像java api一樣豐富嗎,c++是不是大多需要自己寫函數。
c++也含有豐富的類庫,而且帶有STL,裡面封裝了很多類和經過優化的演算法,用起來很方便。而且c++更為靈活,c++含有指針,程序員能夠進行內存管理,而java則做不到。你要是學過設計模式就知道c++比java好用很多。而不像java那樣還得定義interface。 總之一句話吧「c++程序員才是真正的程序員」
❸ 演算法對c和java來說有區別嗎
當然不會有什麼區別,C中1 + 1 = 2,Java中1 + 1 肯定不會等於3 。就如英語和普通話說同一件物品,只是發音不同而已。
只是C在使用編寫函數時,你必須要考慮到變數的初始化長度、何時銷毀等等。而Java完全靠垃圾回收器來處理了。
❹ C語言編寫規則和java一樣嗎
肯定是不一樣的,很多類型,變數都是不一樣的,你會寫java,不代表你會寫c,完全是不一樣的概念,如果你想寫C,估計要從頭學起
❺ 寫演算法題為什麼大多用C語言而不用java
首先c語言的效率比較高,執行起來比較快
其次演算法有不少需要對浮點的數據做定點的截斷,這個用c語言比較通用。同時代碼量相對來說不大。
另外不少演算法在晶元上面去實現,很多晶元驗證環境同時支持c語言的參考模型。
❻ c和c++語言的演算法與JAVA類語言的演算法有什麼不一樣呢
演算法一般沒有區別,只是數據結構有所不同
C不支持類,完全面向過程
而C++支持類,支持向對像
JAVA是C++--,對C++進行改進
對一個程序來說,用C/C++/JAVA可以做到在演算法上完全一致的
❼ 學的java,找工作看演算法都是用C寫的,看著費勁,怎麼破演算法都是C來寫嗎
編程語言都是相通的,如果想看C語言的代碼,只需要稍稍了解一下就可以看懂了。演算法是一種解決問題的方法,只是用編程語言來描述了。無論是C或者Java都可以寫。
❽ C語言和JAVA有什麼區別
區別如下:
1、設計思路不同:C語言是面向過程的語言,執行效率高;Java是面向對象的語言,執行效率比C語言低;
2、通用性不同:C語言不能跨平台;java可以跨平台直接移植,只要有安裝Java虛擬機(JVM)就可以了;
3、語法不同:
(1)、基本數據類型不同:
c語言是int short long char float double 還有一些特殊類型 結構體,指針,聯合體等,數組,字元串 ;
java 是byte int short long float double char boolean ,而且c語言的基本類型的位數和操作系統和機器相關,而java 是固定的;
(2)、文件組織方式不一樣:c語言會把全局變數和方法的聲明,放在一個文件裡面,叫做頭文件,而java 是以類來組織文件的;
4、應用領域不同:C語言主要用於驅動開發、操作系統、內核開發,嵌入式(單片機)、交換機、路由器等網路設備的開發;java主要是企業應用開發,包括伺服器端開發、嵌入式領域、大數據技術、網站領域等。
❾ C與JAVA的區別,特別是演算法
c#與java的區別:
1.屬性:
java中定義和訪問均要用get和set方法,可以不成對出現。
c#中是真正的屬性,定義時get和set必須同時出現,房問時用.號即可。不用get,set
2.對象索引
就是對象數組
public Story this [int index] {
3.C#中,不用任何范圍修飾符時,默認的是protect,因而不能在類外被訪問.
4.因為JAVA規定,在一個文件中只能有一個public類,而且這個類的名稱必須與文件名一模一樣,這是一個區別
5.在C#中,它是以Main方法來定位入口的.如果一個程序中沒有一個名為Main的方法,就會出"找不到入口的錯誤".不要把Main寫成main喲
6.C#預定義的簡單數據類型比Java多。例如,C#有unit,即無符號整數
7.忘掉Java中的static final修飾符。在C#中,常量可以用const關鍵詞聲明
C#的設計者還增加了readonly關鍵詞,readonly域只能通過初始化器或類的構造函數設置
8.公用類的入口點:c#是可以對Main進行重載(java中是main),允許有int返回值和空參數的Main
9.在Java中,switch語句只能處理整數。但C#中的switch語句不同,它還能夠處理字元變數。請考慮下面用switch語句處理字元串變數的C#代碼
10.C#沒有>>>移位操作符
11.goto關鍵詞:
Java不用goto關鍵詞。在C#中,goto允許你轉到指定的標簽。不過,C#以特別謹慎的態度對待goto,比如它不允許goto轉入到語句塊的內部。在Java中,你可以用帶標簽的語句加上break或continue取代C#中的goto。
12.int[] x = { 0, 1, 2, 3 };
int x[] = { 0, 1, 2, 3 };
但在C#中,只有第一行代碼合法,[]不能放到變數名字之後。
13.與Java不同的是,C#允許為名稱空間或者名稱空間中的類指定別名:
using TheConsole = System.Console;
14.在Java中,包的名字同時也是實際存在的實體,它決定了放置.java文件的目錄結構。在C#中,物理的包和邏輯的名稱之間是完全分離的
.NET中包的實體稱為程序集(Assembly)。每一個程序集包含一個manifest結構。manifest列舉程序集所包含的文件,控制哪些類型和資源被顯露到程序集之外,並把對這些類型和資源的引用映射到包含這些類型與資源的文件。程序集是自包含的,一個程序集可以放置到單一的文件之內,也可以分割成多個文件。.NET的這種封裝機制解決了DLL文件所面臨的問題,即臭名昭著的DLL Hell問題。
15.在Java中,java.lang包是默認的包,C#中不存在默認的包
16.C#中的訪問修飾符與Java中的基本對應,但多出了一個internal。簡而言之,C#有5種類型的可訪問性,如下所示:
public:成員可以從任何代碼訪問。
protected:成員只能從派生類訪問。
internal:成員只能從同一程序集的內部訪問。
protected internal:成員只能從同一程序集內的派生類訪問。
private:成員只能在當前類的內部訪問。
17.由於C#中不存在final關鍵詞,如果想要某個類不再被派生,你可以使用sealed關鍵詞
18.與Java不同,C#中的介面不能包含域(Field)。
另外還要注意,在C#中,介面內的所有方法默認都是公用方法。在Java中,方法聲明可以帶有public修飾符(即使這並非必要),但在C#中,顯式為介面的方法指定public修飾符是非法的。例如,下面的C#介面將產生一個編譯錯誤。
19.C#中的is操作符與Java中的instanceof操作符一樣,兩者都可以用來測試某個對象的實例是否屬於特定的類型。在Java中沒有與C#中的as操作符等價的操作符。as操作符與is操作符非常相似,但它更富有「進取心」:如果類型正確的話,as操作符會嘗試把被測試的對象引用轉換成目標類型;否則,它把變數引用設置成null。
20.C#仍舊保留了C++的內存手工管理方法,它適合在速度極端重要的場合使用,而在Java中這是不允許的
21.在C#中,所有的異常都從一個名為Exception的類派生
22.枚舉器即enum類型(java無),把它作為一個變數值的類型使用,從而把變數可能的取值范圍限制為枚舉器中出現的值。
23.結構(Struct)與類很相似,而結構是一種值類型,它存儲在棧中或者是嵌入式的,結構可以實現介面,可以象類一樣擁有成員,但結構不支持繼承
24.屬性聲明語法的第一部分與域聲明很相似,第二部分包括一個set過程和/或一個get過程
25.傳值方式:
在java中簡單數據類型的值傳參時,都以傳值方式;
在c#中如果加ref則會以引用的方式傳值(方法內部改變該參數,則外部變數一起跟著變);
加out與ref基本相同,但out不要求參數一定要初始化.
26.c#保留了指針。unsafe
27.代理:代理(delegate)可以看作C++或者其他語言中的函數指針
代理用來封裝可調用方法。你可以在類裡面編寫方法並在該方法上創建代理,此後這個代理就可以被傳遞到第二個方法。這樣,第二個方法就可以調用第一個方法。
代理是從公共基類System.Delegate派生的引用類型。定義和使用代理包括三個步驟:聲明,創建實例,調用。代理用delegate聲明語法聲明。
❿ Java和C語言有什麼區別
從概念上看,C語言是一門面向過程、抽象化的通用程序設計語言;Java是一門面向對象編程語言,而Java語言是從C語言衍生而來,它吸收了C++語言的各種優點,並且摒棄了C++里難以理解的多繼承、指針等概念。從概念可以看出C語言相當於Java的基礎語言,學完C再學Java會更容易。
從應用領域上,C語言和Java的應用領域幾乎沒有重合。因為隨著這幾年Java、web、PHP等語言的出現,它們憑借比C更簡潔的、更安全的性能快速崛起,搶佔了大量的市場。目前因為Java有完善的框架,在多線程、高並發方面有著較好的穩定性,所以Java主要應用於企業級應用開發、大型系統開發等領域。而C語言由於編程的復雜性,退守到了系統級別語言,而且因為想要系統級軟體可以發揮出機器的功能,它的底層核心就需要用C/C++來編寫,所以C語言主要應用於軟體工業。