c vs c 39 main differences between c
V tomto výučbe sú vysvetlené kľúčové rozdiely medzi jazykmi C Vs C ++ z hľadiska rôznych funkcií:
Jazyk C ++ je podmnožinou jazyka C.
C ++ bol najskôr navrhnutý ako rozšírenie jazyka C. Preto okrem funkcií procedurálneho jazyka odvodených z jazyka C podporuje jazyk C ++ aj objektovo orientované programovacie funkcie, ako je dedičnosť, polymorfizmus, abstrakcia, zapuzdrenie atď.
V tomto tutoriáli sa venujeme niektorým hlavným rozdielom medzi jazykom C a C ++.
Navrhované čítanie => Perfektný sprievodca C ++ pre začiatočníkov
Čo sa dozviete:
- Kľúčové vlastnosti jazykov C a C ++
- Kľúčové rozdiely medzi C Vs C ++
- Tabuľkový formát: C Vs C ++
- Často kladené otázky o C a C ++
- Záver
- Odporúčané čítanie
Kľúčové vlastnosti jazykov C a C ++
Predtým, ako začneme s rozdielmi, uveďme zoznam niektorých funkcií jazyka C aj C ++.
Vlastnosti a vlastnosti C.
- Procedurálne
- Prístup zdola nahor.
- Programovací jazyk systému.
- Nepodporuje triedy a objekty.
- Podporuje ukazovatele
Vlastnosti a vlastnosti C ++
- Objektovo orientovaný
- Prístup zdola nahor
- Rýchlosť je rýchlejšia.
- Bohatá podpora knižnice v podobe štandardnej knižnice šablón.
- Podporuje ukazovatele a referencie.
- Skompilovaný
Kľúčové rozdiely medzi C Vs C ++
Nižšie sú uvedené hlavné rozdiely medzi C Vs C ++.
# 1) Typ programovania:
C je procedurálny jazyk, v ktorom sa program točí okolo funkcií. Celý problém je rozdelený do mnohých funkcií. Program sa zameriava hlavne na funkcie alebo postupy potrebné na vykonanie vecí.
C ++ je naopak objektovo orientovaný programovací jazyk. Tu sa zameriavajú hlavne na údaje o probléme a triedy sú postavené na týchto údajoch. Funkcie pracujú s údajmi a sú úzko spojené s údajmi.
# 2) Programovací prístup:
Pretože C je procedurálny jazyk, dodržuje programovací prístup zhora nadol. Tu vezmeme problém a potom ho rozdelíme na čiastkové problémy, až kým nenájdeme jednotlivé čiastkové problémy, ktoré je možné priamo vyriešiť. Potom skombinujeme riešenia, aby sme získali hlavné riešenie.
C ++ sa pri programovaní riadi prístupom zdola nahor. V tomto začneme s nízkoúrovňovým dizajnom alebo kódovaním a potom na tomto nízkoúrovňovom dizajne stavíme, aby sme získali riešenie na vysokej úrovni.
# 3) Vývoj aplikácií:
Jazyk C je užitočný pri programovaní zabudovaných systémov alebo implementácii na nízkej úrovni.
C ++ je na druhej strane vhodnejší pre aplikácie na strane servera, sieťové aplikácie alebo pre aplikácie ako hry atď.
# 4) Prípona súboru:
Programy napísané v jazyku C sa zvyčajne ukladajú s príponou „.c“, zatiaľ čo programy v C ++ sa ukladajú s príponou „.cpp“.
# 5) vzájomná kompatibilita:
C ++ je podmnožinou jazyka C, pretože je vyvíjaný a väčšinu svojich procedurálnych konštruktov preberá z jazyka C. Akýkoľvek program C bude teda kompilovaný a bude v poriadku s kompilátorom C ++.
Jazyk C však nepodporuje objektovo orientované funkcie jazyka C ++, a preto nie je kompatibilný s programami C ++. Preto programy napísané v C ++ nebudú fungovať na kompilátoroch C.
# 6) Kompatibilita s inými jazykmi:
Jazyk C ++ je všeobecne kompatibilný s inými všeobecnými programovacími jazykmi, ale jazyk C nie.
# 7) Jednoduché kódovanie:
Dá sa povedať, že C je praktický jazyk a môžeme si ho programovať ľubovoľným spôsobom. C ++ pozostáva z niektorých objektovo-orientovaných programovacích konštrukcií na vysokej úrovni, ktoré nám pomáhajú kódovať programy na vysokej úrovni.
Ak teda hovoríme, že C je ľahké, potom je aj programovanie v C ++ jednoduchšie.
# 8) Zabezpečenie údajov:
V jazyku C sa hlavný dôraz kladie skôr na funkcie alebo postupy ako na údaje. Pokiaľ ide o bezpečnosť údajov, je to v C. zanedbateľné.
V C ++, keďže máme do činenia s triedami a objektmi, je hlavným stavebným prvkom programu Data. Dáta sú teda prísne zabezpečené pomocou tried, špecifikátorov prístupu, zapuzdrenia atď.
# 9) Divízia programu:
Program v jazyku C je rozdelený na funkcie a moduly. Tieto funkcie a moduly sú potom vyvolané hlavnou funkciou alebo inými funkciami na vykonanie.
Program v C ++ je rozdelený na triedy a objekty. Problém je koncipovaný do tried a objektmi týchto tried sú vykonávacie jednotky, ktoré sú vytvárané hlavnými funkciami a sú vykonávané.
najlepšie zadarmo blokovanie automaticky otváraných okien chrome
# 10) Štandardné I / O operácie:
Štandardné operácie vstupu a výstupu v jazyku C na čítanie / zápis údajov z / do štandardného zariadenia sú „scanf“ a „printf“.
V jazyku C ++ sa údaje načítavajú zo štandardného vstupného zariadenia pomocou znaku „cin“, zatiaľ čo sa tlačia na výstupné zariadenie pomocou znaku „cout“.
# 11) Zameranie / dôraz:
C je procedurálny jazyk a kladie väčší dôraz na postupnosť krokov alebo postupov na vyriešenie problému.
C ++ je naopak objektovo orientovaný, a tak sa viac zameriava na objekty a triedy, okolo ktorých má byť riešenie postavené.
# 12) Hlavná () funkcia:
V C ++ nemôžeme zavolať funkciu main () z iného bodu. Funkcia main () je jediný bod vykonania.
V jazyku C však môžeme mať funkciu main () volanú ostatnými funkciami v kóde.
# 13) Premenná:
Premenné je potrebné deklarovať na začiatku funkčného bloku v jazyku C, naopak, premenné môžeme deklarovať kdekoľvek v programe C ++ za predpokladu, že sú deklarované pred použitím v kóde.
# 14) Globálne premenné:
Jazyk C umožňuje viacnásobné deklarácie globálnych premenných. C ++ však neumožňuje viacnásobné deklarácie globálnych premenných.
# 15) Ukazovatele a referenčné premenné:
Ukazovatele sú premenné, ktoré smerujú na adresy v pamäti. C aj C ++ podporujú ukazovatele a rôzne operácie vykonávané s ukazovateľmi.
Odkazy fungujú ako aliasy premenných a smerujú na rovnaké pamäťové miesto ako premenná.
Jazyk C podporuje iba ukazovatele, nie odkazy. C ++ podporuje ukazovatele aj referencie.
# 16) Výčty:
Môžeme deklarovať enumerácie v C aj v C ++. Ale v jazyku C sú konštanty výčtu typu Integer. Je to to isté, ako keby ste vyhlásili celočíselnú konštantu bez akejkoľvek bezpečnosti.
V C ++ sú výčty rôzne. Sú rôznych typov. Na priradenie celočíselného typu k premennej vymenovaného typu teda potrebujeme explicitnú konverziu typu.
Môžeme však priradiť vymenovanú hodnotu premennej celočíselného typu, pretože vymenovaný typ umožňuje integrálnu podporu alebo implicitnú konverziu.
# 17) Reťazce:
Pokiaľ ide o reťazce, deklarácia „char ()“ deklaruje pole reťazcov. Keď sa ale reťazec deklarovaný vyššie uvedie medzi funkciami, neexistuje žiadna záruka, že sa nezmení inými externými funkciami, pretože tieto reťazce sú premenlivé.
Táto nevýhoda nie je v C ++, pretože C ++ podporuje dátový typ reťazca, ktorý definuje nemenné reťazce.
# 18) Inline funkcia:
Vložené funkcie nie sú v C. podporované. C zvyčajne urýchľuje vykonávanie makier. Na druhej strane v C ++ sa používajú vložené funkcie, ako aj makrá.
# 19) Predvolené argumenty:
Predvolené argumenty / parametre sa používajú, keď parametre nie sú zadané v čase volania funkcie. V definícii funkcie určujeme predvolené hodnoty parametrov.
Jazyk C nepodporuje predvolené parametre. Zatiaľ čo C ++ podporuje použitie predvolených argumentov.
# 20) Štruktúry:
Štruktúry v C a C ++ používajú rovnaký koncept. Rozdiel je ale v C, pretože nemôžeme zahrnúť funkcie ako členov.
C ++ umožňuje štruktúram mať funkcie ako svojich členov.
# 21) Triedy a objekty:
C je procesný jazyk, a preto nepodporuje koncepciu tried a objektov.
Na druhej strane, C ++ podporuje koncept tried a objektov a takmer všetky aplikácie v C ++ sú postavené okolo tried a objektov.
# 22) Dátové typy:
C podporuje zabudované a primitívne dátové typy. Napriek tomu C ++ podporuje okrem vstavaných a primitívnych dátových typov aj používateľom definované dátové typy.
Okrem toho C ++ podporuje aj booleovské a reťazcové dátové typy, ktoré C. nepodporuje.
# 23) Preťaženie funkcií:
Preťaženie funkcií je schopnosť mať viac ako jednu funkciu s rovnakým názvom, ale rôznymi parametrami alebo zoznamom parametrov alebo poradím parametrov.
Toto je dôležitá vlastnosť objektovo orientovaného programovania a je prítomná v C ++. C však túto funkciu nepodporuje.
# 24) Dedenie:
Dedenie je tiež dôležitou vlastnosťou objektovo orientovaného programovania, ktoré podporuje C ++ a nie C.
# 25) Funkcie:
C nepodporuje funkcie s predvoleným usporiadaním, ako sú predvolené parametre atď. C ++ podporuje funkcie s predvoleným usporiadaním.
# 26) Menný priestor:
Menné priestory nie sú podporované v jazyku C, ale sú podporované v jazyku C ++ .
# 27) Zdrojový kód:
C je jazyk vo voľnom formáte, ktorý nám umožňuje programovať čokoľvek. C ++ je odvodené od jazyka C a má tiež objektovo orientované programovacie funkcie, ktoré zvyšujú jeho efektívnosť, pokiaľ ide o zdrojový kód.
# 28) Abstrakcia:
Abstrakcia je spôsob, ako skryť podrobnosti implementácie a vystaviť používateľovi iba požadované rozhranie. Toto je jeden z charakteristických znakov objektovo orientovaného programovania.
C ++ podporuje túto funkciu, zatiaľ čo C nie.
# 29) Zapuzdrenie:
Zapuzdrenie je technika, pomocou ktorej zapuzdrujeme údaje z vonkajšieho sveta. To pomáha pri skrývaní informácií.
C ++ používa triedy, ktoré zhromažďujú údaje a funkcie fungujúce na týchto údajoch, do jednej jednotky. Toto je zapuzdrenie. C túto vlastnosť nemá.
# 30) Skrývanie informácií:
Vlastnosti abstrakcie a zapuzdrenia môžu pomôcť pri skrývaní informácií tak, že od používateľa odkryje iba požadované podrobnosti a skryje podrobnosti, ako je implementácia atď. Týmto spôsobom môžeme zvýšiť bezpečnosť údajov v našich programoch.
C ++ kladie veľký dôraz na dáta a na ukrytie informácií využíva abstrakciu a zapuzdrenie.
C nekladie žiadny dôraz na údaje a nezaoberá sa skrývaním informácií.
# 31) Polymorfizmus:
Polymorfizmus jednoducho znamená, že jeden objekt má mnoho podôb a je to podstatná vlastnosť objektovo orientovaného programovania. C ++ je objektovo orientovaný jazyk a podporuje polymorfizmus.
C nemá podporu pre objektovo orientované programovanie a nepodporuje polymorfizmus. Môžeme však simulovať dynamické odoslanie funkcií v jazyku C pomocou ukazovateľov funkcií.
# 32) Virtuálna funkcia:
Virtuálne funkcie, ktoré sa tiež nazývajú runtime polymorfizmus, je technika, ktorá sa používa na riešenie volaní funkcií za behu. Toto je ďalšia vlastnosť objektovo orientovaného programovania, ktorú podporuje C ++ a nie C.
# 33) Programovanie GUI:
Na programovanie súvisiace s GUI (grafické používateľské rozhranie) používa C nástroje Gtk, zatiaľ čo C ++ používa nástroje Qt.
# 34) Mapovanie:
Pokiaľ ide o mapovanie údajov pomocou funkcií, jazyk C je veľmi komplikovaný, pretože sa nezameriava na údaje.
Zatiaľ čo C ++ má dobré mapovanie údajov a funkcií, pretože podporuje triedy a objekty, ktoré spájajú údaje a funkcie dohromady.
# 35) Správa pamäte:
C aj C ++ majú manuálnu správu pamäte, ale spôsob správy pamäte sa líši v oboch jazykoch.
V jazyku C používame na pridelenie pamäte funkcie ako malloc (), calloc (), realloc () atď. Na uvoľnenie pamäte funkcia free (). Ale v C ++ používame operátory new () a delete () na pridelenie a uvoľnenie pamäte.
# 36) Predvolené hlavičky:
Predvolené hlavičky obsahujú bežné volania funkcií, ktoré sa používajú v programovacích jazykoch hlavne na vstup-výstup atď.
V jazyku C je „stdio.h“ predvolená hlavička, zatiaľ čo C ++ je použitá ako predvolená hlavička .
# 37) Výnimka / spracovanie chýb:
C ++ podporuje spracovanie výnimiek a chýb pomocou blokov try-catch. C nepodporuje spracovanie výnimiek priamo, ale chyby môžeme vyriešiť pomocou nejakého riešenia.
# 38) Kľúčové slová:
C ++ podporuje oveľa viac kľúčových slov ako slovo C. V skutočnosti má C iba 32 kľúčových slov, zatiaľ čo C ++ má 52 kľúčových slov.
# 39) Šablóny:
Šablóny nám umožňujú definovať triedy a objekty nezávisle od dátového typu. Pomocou šablón môžeme napísať všeobecný kód a zavolať ho pre akýkoľvek dátový typ.
Objektovo orientovaný jazyk C ++ používa triedy a objekty, a teda podporuje šablóny. C na druhej strane nepodporuje koncept šablón.
Tabuľkový formát: C Vs C ++
Nie | Charakteristiky | C. | C ++ |
---|---|---|---|
7 | Jednoduché kódovanie | Umožňuje nám všetko kódovať. | Prichádza s vysoko pokročilými objektovo orientovanými konceptmi. |
jeden | Typ programovania | Procedurálny jazyk | Objektovo orientovaný programovací jazyk. |
dva | Programovací prístup | Prístup zhora nadol | Prístup zdola nahor |
3 | Vývoj aplikácií | Dobré pre vložené zariadenia, kódovanie na úrovni systému atď. | Dobré pre siete, aplikácie na strane servera, hry atď. |
4 | Rozšírenie súboru | .c | .cpp |
5 | Zlučiteľnosť navzájom | Nie je kompatibilný s C ++. | Kompatibilné s C ako C ++ je podmnožina C. |
6 | Kompatibilita s inými jazykmi | Nekompatibilný | Kompatibilné |
8 | Bezpečnosť údajov | Zanedbateľné | Vysoký |
9 | Programové rozdelenie | Program rozdelený na funkcie. | Program rozdelený na triedy a objekty. |
10 | Štandardné I / O operácie | scanf / printf | cin / náklady |
jedenásť | Zameranie / dôraz | Zdôrazňuje funkcie a / alebo procesy. | Dôraz sa kladie skôr na údaje ako na funkcie. |
12 | Funkcia main () | Môže volať na main cez ďalšie funkcie. | Nie je možné volať na hlavný smer z ktoréhokoľvek bodu. |
13 | Premenné | Uvedie sa na začiatku funkcie. | Možno deklarovať kdekoľvek v programe. |
14 | Globálne premenné | Viacnásobné vyhlásenia | Žiadne viacnásobné vyhlásenia. |
pätnásť | Referenčné premenné a ukazovatele | Iba ukazovatele | Oboje |
16 | Vyčíslenia | Iba celočíselné typy. | Výrazný typ |
17 | Struny | Podporuje iba znak () | Podporuje nemennú triedu reťazcov. |
18 | Inline funkcia | Nie je podporované | Podporované |
19 | Predvolené argumenty | Nie je podporované | Podporované |
dvadsať | Štruktúry | Nemôže mať funkcie ako členovia štruktúry. | Môže fungovať ako člen štruktúry. |
dvadsaťjeden | Triedy a predmety | Nie je podporované | Podporované |
22 | Dátové typy | Podporované sú iba vstavané a primitívne dátové typy. Žiadne logické a reťazcové typy. | Okrem vstavaných dátových typov sú podporované aj logické a reťazcové typy. |
2. 3 | Preťaženie funkcií | Nie je podporované | Podporované |
24 | Dedenie | Nie je podporované | Podporované |
25 | Funkcie | Nepodporuje funkcie s predvoleným usporiadaním. | Podporuje funkcie s predvoleným usporiadaním. |
26 | Menný priestor | Nie je podporované | Podporované |
27 | Zdrojový kód | Voľný formát | Pôvodne prevzaté z C plus objektovo. |
28 | Abstrakcia | Nie je prítomný | Prítomný |
29 | Skrývanie informácií | Nie je podporované | Podporované |
30 | Zapuzdrenie | Nie je podporované | Podporované |
31 | Polymorfizmus | Nie je podporované | Podporované |
32 | Virtuálna funkcia | Nie je podporované | Podporované |
33 | Programovanie GUI | Pomocou nástroja Gtk. | Pomocou nástrojov Qt. |
3. 4 | Mapovanie | Nie je možné ľahko mapovať údaje a funkcie. | Dáta a funkcie možno ľahko mapovať. |
35 | Správa pamäte | Malloc (), calloc (), free () funkcie. | Nové () a mazané () operátory. |
36 | Predvolené hlavičky | Stdio.h | hlavička iostream |
37 | Spracovanie výnimiek / chýb | Žiadna priama podpora. | Podporované |
38 | Kľúčové slová | Podporuje 32 kľúčových slov. | Podporuje 52 kľúčových slov. |
39 | Šablóny | Nie je podporované | Podporované |
Často kladené otázky o C a C ++
Doteraz sme videli kľúčové rozdiely medzi C Vs C ++. Teraz odpovieme na niektoré často kladené otázky týkajúce sa C, C ++ a ich porovnania.
Otázka č. 1) Prečo sa stále používajú jazyky C a C ++?
Odpovede: C a C ++ sú stále populárne aj napriek príliš veľkému množstvu programovacích jazykov na trhu. Hlavným dôvodom je, že C a C ++ sú blízke hardvéru. Po druhé, s týmito jazykmi môžeme takmer robiť čokoľvek.
Výkon C ++ je v porovnaní s inými jazykmi vysoký. Pokiaľ ide o vývoj zabudovaných systémov, zdá sa, že C je jasnou voľbou. Aj keď jedna veľkosť nemusí vyhovovať všetkým, existuje niekoľko aplikácií a projektov, ktoré je možné vyvinúť iba v jazykoch C a C ++.
Otázka 2) Čo je náročnejšie na C alebo C ++? Alebo Čo je lepšie C alebo C ++?
Odpovede: V skutočnosti sú obe ťažké a obe sú ľahké. C ++ je postavený na C a podporuje tak všetky funkcie jazyka C a taktiež má objektovo orientované programovacie funkcie. Pokiaľ ide o učenie, veľkosť C je menšia a na učenie je potrebných málo konceptov, zatiaľ čo C ++ je obrovská. Môžeme teda povedať, že C je ľahší ako C ++.
Pokiaľ ide o programovanie, musíte myslieť na aplikáciu, ktorú vyvíjate. Preto vzhľadom na programovanú aplikáciu musíme zvážiť klady a zápory oboch jazykov a rozhodnúť sa, ktorá aplikácia sa bude ľahšie vyvíjať.
Na záver môžeme povedať, že neexistuje jednoznačná odpoveď na otázku, ktorá je zložitejšia alebo ktorá lepšia.
Otázka č. 3) Môžeme sa naučiť C ++ bez C? Je C ++ ťažké naučiť sa?
Odpovede: Áno, C ++ sa môžeme ľahko naučiť bez znalosti C.
So správnym nastavením mysle a dobrými programátorskými znalosťami teda môžete prejsť na jazyk C ++ bez toho, aby ste sa dotkli C. Pretože C je podmnožinou jazyka C ++, počas učenia sa jazyka C ++ sa jazyka C vždy chopíte.
Otázka č. 4) Čo je rýchlejšie C alebo C ++?
Odpovede: V skutočnosti to závisí od toho, akú funkciu používame. Napríklad, ak sme v našom programe C ++ použili objektovo orientované programovacie funkcie ako virtuálna funkcia, potom bude tento program pomalší, pretože na údržbu virtuálnych tabuliek a ďalších podrobností o virtuálnych funkciách je vždy potrebné vynaložiť ďalšie úsilie.
Pokiaľ ale v C ++ používame bežné funkcie, potom bude mať tento program C ++ a akýkoľvek iný program C rovnakú rýchlosť. Závisí to teda od faktorov, ako je aplikácia, ktorú vyvíjame, funkcie, ktoré používame atď.
Otázka č. 5) Je C ++ dobrým začiatočným jazykom?
Odpovede: Odpoveď je áno a nie.
Je to áno, pretože sa môžeme naučiť akýkoľvek programovací jazyk, ak máme správnu motiváciu, čas investovať a máme vôľu učiť sa. Jediným predpokladom je, že by ste mali mať základné počítačové znalosti a základnú terminológiu programovania.
Keď teda začneme s C ++, pokiaľ sa učíme základné znalosti jazyka a ďalších konštrukcií, ako sú slučky, rozhodovanie atď., Je to celkom jednoduché ako v každom inom jazyku.
Teraz prídeme k časti No part.
Vieme, že C ++ je veľmi rozsiahly a má veľa funkcií. Keď teda napredujeme v učení, mohli by sme čeliť mnohým výzvam v programovaní v C ++, takže ako nováčik by sme ich nemuseli zvládnuť.
Len si predstavte situáciu, keď začínam s C ++ ako prvým jazykom a stretávam sa s únikom pamäte !! Preto je dobré začať s jednoduchými jazykmi, ako sú Python alebo Ruby. Zoznámte sa s programovaním a potom choďte na C ++.
Záver
V tomto tutoriáli sme preskúmali hlavné rozdiely medzi jazykmi C Vs C ++ z hľadiska rôznych funkcií.
Zatiaľ čo C je procedurálny jazyk a C ++ je objektovo orientovaný programovací jazyk, videli sme, že mnoho funkcií je exkluzívnych pre C ++. Pretože C ++ je odvodený od C, podporuje mnoho funkcií, ktoré podporuje C.
V nasledujúcich tutoriáloch budeme pokračovať v diskusii o rozdieloch medzi C ++ a inými programovacími jazykmi ako Java a Python.
=> Tu si pozrite kompletnú sériu školení v C ++
Odporúčané čítanie
- Výukový program pre hlavné funkcie Pythonu s praktickými príkladmi
- Git vs GitHub: Preskúmajte rozdiely pomocou príkladov
- TDD Vs BDD - analyzujte rozdiely pomocou príkladov
- 70+ NAJLEPŠÍCH tutoriálov pre C ++ Naučte sa programovanie v C ++ ZDARMA
- Funkcie dátumu a času v C ++ s príkladmi
- Ako funguje testovanie na základe dát (príklady QTP a selénu)
- Shell zoradený v C ++ s príkladmi
- Výukový program pre Python DateTime s príkladmi