c vs c 39 main differences between c
Denna handledning förklarar de viktigaste skillnaderna mellan C Vs C ++ språk när det gäller olika funktioner:
C ++ språk är en delmängd av C-språket.
C ++ designades först som en förlängning av C-språket. Förutom de processuella språkfunktionerna härledda från C stöder C ++ också objektorienterade programmeringsfunktioner som arv, polymorfism, abstraktion, inkapsling etc.
I denna handledning diskuterar vi några av de viktigaste skillnaderna mellan C och C ++ språk.
Föreslagen läsning => Perfekt C ++ guide för nybörjare
Vad du kommer att lära dig:
- Viktiga funktioner i C och C ++
- Viktiga skillnader mellan C Vs C ++
- Tabellformat: C Vs C ++
- Vanliga frågor om C och C ++
- Slutsats
- Rekommenderad läsning
Viktiga funktioner i C och C ++
Innan vi går vidare med skillnaderna, låt oss lista ner några av funktionerna i både C- och C ++ -språket.
Funktioner och egenskaper hos C
- Procedurellt
- Uppifrån och upp-strategi.
- Systemets programmeringsspråk.
- Stöder inte klasser och objekt.
- Stöder pekare
Funktioner och egenskaper hos C ++
- Objektorienterad
- Bottom-up-tillvägagångssätt
- Hastigheten är snabbare.
- Stort biblioteksstöd i form av standardmallbiblioteket.
- Stöder pekare och referenser.
- Sammanställt
Viktiga skillnader mellan C Vs C ++
Nedan listas de viktigaste skillnaderna mellan C Vs C ++.
# 1) Typ av programmering:
C är ett processpråk där programmet kretsar kring funktionerna. Hela problemet är uppdelat i många funktioner. Programmets huvudfokus ligger på funktioner eller procedurer för att få saker gjorda.
Tvärtom är C ++ ett objektorienterat programmeringsspråk. Här är problemets data huvudfokus och klasserna bygger på dessa data. Funktioner fungerar på data och nära bundna till data.
# 2) Programmeringsmetod:
Eftersom C är ett procedurspråk följer det en uppifrån och ner-metod för programmering. Här tar vi problemet och delar sedan upp det i delproblem tills vi hittar enstaka delproblem som kan lösas direkt. Sedan kombinerar vi lösningarna för att få huvudlösningen.
C ++ följer en bottom-up-metod för programmering. I detta börjar vi med låg nivå design eller kodning och bygger sedan på denna låg nivå design för att få en hög nivå lösning.
# 3) Applikationsutveckling:
C-språk är till hjälp vid programmering av inbäddade system eller implementeringar på låg nivå.
C ++, å andra sidan, är mer lämpligt för applikationer på serversidan, nätverksapplikationer eller för applikationer som spel, etc.
# 4) Filändelse:
Programmen skrivna i C sparas vanligtvis med tillägget “.c” medan C ++ -programmen sparas med tillägget “.cpp”.
# 5) Kompatibilitet med varandra:
C ++ är en delmängd av C när den utvecklas och tar de flesta av dess procedurkonstruktioner från C-språket. Således kommer alla C-program att kompileras och fungera bra med C ++ - kompilatorn.
C-språk stöder dock inte objektorienterade funktioner i C ++ och är därför inte kompatibelt med C ++ -program. Därför körs inte program skrivna i C ++ på C-kompilatorer.
# 6) Kompatibilitet med andra språk:
C ++ språk är vanligtvis kompatibelt med andra generiska programmeringsspråk men C-språk är inte.
# 7) Enkel kodning:
Vi kan säga att C är ett praktiskt språk och vi kan programmera det på vilket sätt vi vill. C ++ består av några objektorienterade programmeringskonstruktioner på hög nivå som hjälper oss att koda program på hög nivå.
Således om vi säger att C är lätt så är C ++ också lättare att koda.
# 8) Datasäkerhet:
I C läggs huvudfokus på funktioner eller procedurer snarare än på data. Således när det gäller datasäkerhet är den försumbar i C.
I C ++, som vi har att göra med klasser och objekt, är programmets huvudbyggsten Data. Således skyddas data tätt med hjälp av klasser, åtkomstspecifikatorer, inkapsling etc.
# 9) Programavdelning:
Ett program i C är uppdelat i funktioner och moduler. Dessa funktioner och moduler anropas sedan av huvudfunktionen eller andra funktioner för körning.
Ett C ++ - program är uppdelat i klasser och objekt. Problemet är utformat i klasser och objekten i dessa klasser är de exekverande enheter som skapas av huvudfunktionerna och körs.
# 10) Standard I / O-funktioner:
Standardinmatnings- och ingångsoperationerna i C för att läsa / skriva data från / till standardenheten är 'scanf' respektive 'printf'.
I C ++ läses informationen från standardinmatningsenheten med hjälp av 'cin' medan den skrivs ut till utdataenheten med 'cout'.
# 11) Fokus / betoning:
Eftersom det är ett processpråk har C mer tonvikt på steg eller procedurer för att lösa ett problem.
C ++, å andra sidan, är objektorienterad och lägger därmed mer fokus på objekt och klasser kring vilka lösningen ska byggas.
# 12) Huvudfunktionen ():
I C ++ kan vi inte anropa en huvudfunktion () från någon annan punkt. Huvudfunktionen () är den enda exekveringspunkten.
På C-språk kan vi dock ha en huvudfunktion () som kallas av de andra funktionerna i koden.
# 13) Variabel:
Variabler måste deklareras i början av funktionsblocket i C, tvärtom kan vi deklarera variabler var som helst i ett C ++ - program förutsatt att de deklareras innan de används i koden.
# 14) Globala variabler:
C-språk tillåter flera deklarationer av globala variabler. C ++ tillåter dock inte flera deklarationer av globala variabler.
# 15) Pekare och referensvariabler:
Pekare är de variabler som pekar på minnesadresser. Både C och C ++ stöder pekare och olika operationer som utförs på pekare.
Referenser fungerar som alias för variablerna och pekar på samma minnesplats som en variabel.
C-språk stöder bara pekare och inte referenser. C ++ stöder pekare såväl som referenser.
# 16) Uppräkningar:
Vi kan deklarera uppräkningar i både C och C ++. Men i C är uppräkningskonstanterna av heltalstyp. Det är detsamma som att deklarera en heltalskonstant utan någon typ av säkerhet.
I C ++ är uppräkningarna olika. De är av olika typer. För att tilldela en heltalstyp till en variabel av en uppräknad typ behöver vi alltså uttrycklig typkonvertering.
Vi kan dock tilldela ett uppräknat värde till en variabel av heltalstyp eftersom uppräknad typ möjliggör integrerad marknadsföring eller implicit konvertering.
# 17) Strängar:
När det gäller strängar deklarerar deklarationen 'char ()' en strängmatris. Men när strängen som deklareras som ovan passeras mellan funktionerna, finns det ingen garanti för att den inte kommer att ändras av de andra externa funktionerna eftersom dessa strängar är mutabla.
Denna nackdel finns inte i C ++ eftersom C ++ stöder strängdatatyp som definierar oföränderliga strängar.
# 18) Inline-funktion:
Inline-funktioner stöds inte i C. C fungerar vanligtvis med makron för att påskynda körningen. I C ++ däremot används inline-funktioner, såväl som makron.
# 19) Standardargument:
Standardargument / parametrar används när parametrarna inte anges vid tidpunkten för funktionsanropet. Vi anger standardvärden för parametrar i funktionsdefinitionen.
C-språket stöder inte standardparametrar. Medan C ++ stöder användningen av standardargument.
# 20) Strukturer:
Strukturer i C och C ++ använder samma koncept. Men skillnaden är, i C, eftersom vi inte kan inkludera funktioner som medlemmar.
C ++ tillåter strukturer att ha funktioner som sina medlemmar.
# 21) Klasser och objekt:
C är ett procedurspråk och stöder därför inte begreppet klasser och objekt.
Å andra sidan stöder C ++ begreppet klasser och objekt och nästan alla applikationer i C ++ är uppbyggda kring klasser och objekt.
# 22) Datatyper:
C stöder inbyggda och primitiva datatyper. I motsats till detta stöder C ++ användardefinierade datatyper utöver inbyggda och primitiva datatyper.
Bortsett från detta stöder C ++ även booleska och strängdatatyper som inte stöds av C.
# 23) Funktionsöverbelastning:
Funktionsöverbelastning är möjligheten att ha mer än en funktion med samma namn men olika parametrar eller en lista med parametrar eller parametrar.
Detta är ett viktigt inslag i objektorienterad programmering och finns i C ++. C stöder dock inte den här funktionen.
# 24) Arv:
Arv är också ett viktigt inslag i objektorienterad programmering som stöds av C ++ och inte C.
# 25) Funktioner:
C stöder inte funktioner med standardarrangemang som standardparametrar etc. C ++ stöder funktioner med standardarrangemang.
# 26) Namnområde:
Namnområden stöds inte i C men stöds av C ++ .
# 27) Källkod:
C är ett språk med fritt format som ger oss möjlighet att programmera vad som helst. C ++ härrör från C och har också objektorienterade programmeringsfunktioner som gör den mer effektiv vad gäller källkoden.
# 28) Abstraktion:
Abstraktion är sättet att dölja implementeringsdetaljerna och endast exponera det nödvändiga gränssnittet för användaren. Detta är en av kännetecknen för objektorienterad programmering.
C ++ stöder den här funktionen medan C inte gör det.
# 29) Inkapsling:
Inkapsling är en teknik där vi inkapslar data från omvärlden. Detta hjälper till att dölja information.
C ++ använder klasser som buntar data och funktionerna som fungerar på dessa data i en enda enhet. Detta är inkapsling. C har inte den här funktionen.
# 30) Döljande information:
Funktionerna i abstraktion och inkapsling kan hjälpa till att dölja information genom att endast exponera de nödvändiga detaljerna och dölja detaljerna som implementering etc. från användaren. På så sätt kan vi förbättra datasäkerheten i våra program.
C ++ lägger stor vikt vid data och använder abstraktion och inkapsling för att dölja information.
C lägger ingen vikt vid data och hanterar inte information som gömmer sig.
# 31) Polymorfism:
Polymorfism betyder helt enkelt att ett objekt har många former och det är ett väsentligt inslag i objektorienterad programmering. Att vara ett objektorienterat språk stöder C ++ polymorfism.
C har inget stöd för objektorienterad programmering och stöder inte polymorfism. Vi kan dock simulera den dynamiska avsändningen av funktioner i C med hjälp av funktionspekare.
# 32) Virtuell funktion:
Virtuella funktioner som också kallas Runtime-polymorfism är en teknik som används för att lösa funktionssamtal vid körning. Detta är ännu en funktion av objektorienterad programmering som stöds av C ++ och inte av C.
# 33) GUI-programmering:
För programmering relaterad till GUI (grafiskt användargränssnitt) använder C Gtk-verktyg medan C ++ använder Qt-verktyg.
# 34) Kartläggning:
När det gäller kartläggning av data med funktioner är C-språket mycket komplicerat eftersom det inte håller något fokus på data.
C ++ har en bra kartläggning av data och funktioner eftersom den stöder klasser och objekt som binder data och funktioner tillsammans.
# 35) Minneshantering:
Både C och C ++ har manuell minneshantering men hur minneshantering görs skiljer sig åt på båda språken.
I C använder vi funktioner som malloc (), calloc (), realloc () etc. för att allokera minne och ledig () -funktion för att frigöra minnet. Men i C ++ använder vi nya () och delete () -operatörer för att allokera respektive distribuera minnet.
# 36) Standardrubriker:
Standardrubriker innehåller de vanliga funktionsanropen som används i programmeringsspråk främst för input-output etc.
I C är 'stdio.h' den standardrubrik som används medan C ++ används som standardrubrik .
# 37) Undantag / felhantering:
C ++ stöder undantags- / felhantering med försöksfångstblocken. C stöder inte hantering av undantag direkt men vi kan hantera fel med hjälp av en viss lösning.
# 38) Nyckelord:
C ++ stöder mycket fler nyckelord än C. C har faktiskt bara 32 nyckelord medan C ++ har 52 nyckelord.
# 39) Mallar:
Mallar tillåter oss att definiera klasser och objekt oberoende av datatypen. Med hjälp av mallar kan vi skriva generisk kod och kalla den för vilken datatyp som helst.
C ++ som objektorienterad använder klasser och objekt och stöder därmed mallar. C stöder däremot inte begreppet mallar.
Tabellformat: C Vs C ++
Låt bli | Egenskaper | C | C ++ |
---|---|---|---|
7 | Enkel kodning | Låter oss koda allt. | Levereras med mycket avancerade objektorienterade koncept. |
1 | Typ av programmering | Procedurellt språk | Objektorienterat programmeringsspråk. |
två | Programmeringsmetod | Top-down-tillvägagångssätt | Bottom-up-tillvägagångssätt |
3 | Applikationsutveckling | Bra för inbäddade enheter, kodning på systemnivå etc. | Bra för nätverk, serverapplikationer, spel etc. |
4 | Filändelsen | .c | .cpp |
5 | Kompatibilitet med varandra | Ej kompatibel med C ++. | Kompatibel med C eftersom C ++ är en delmängd av C. |
6 | Kompatibilitet med andra språk | Inte kompatibel | Kompatibel |
8 | Datasäkerhet | Försumbar | Hög |
9 | Programuppdelning | Programmet är uppdelat i funktioner. | Program uppdelat i klasser och objekt. |
10 | Standard I / O-operationer | scanf / printf | cin / kostnad |
elva | Fokus / betoning | Betonar funktioner och / eller processer. | Betonar data istället för funktioner. |
12 | Huvudfunktionen () | Kan ringa huvud via andra funktioner. | Det går inte att ringa huvud från någon punkt. |
13 | Variabler | Att deklareras i början av funktionen. | Kan deklareras var som helst i programmet. |
14 | Globala variabler | Flera deklarationer | Inga multipeldeklarationer. |
femton | Referensvariabler och pekare | Endast pekare | Både |
16 | Uppräkningar | Endast heltalstyper. | Distinkt typ |
17 | Strängar | Stöder endast röding () | Stöder strängklass som är oföränderlig. |
18 | Inline-funktion | Stöds inte | Stöds |
19 | Standardargument | Stöds inte | Stöds |
tjugo | Strukturer | Kan inte ha funktioner som strukturmedlemmar. | Kan ha funktioner som strukturmedlemmar. |
tjugoett | Klasser och objekt | Stöds inte | Stöds |
22 | Datatyper | Endast inbyggda och primitiva datatyper stöds. Inga booleska och strängtyper. | Booleska och strängtyper stöds utöver inbyggda datatyper. |
2. 3 | Funktionsöverbelastning | Stöds inte | Stöds |
24 | Arv | Stöds inte | Stöds |
25 | Funktioner | Stöder inte funktioner med standardarrangemang. | Stöder funktioner med standardarrangemang. |
26 | Namnområde | Stöds inte | Stöds |
27 | Källkod | Fritt format | Ursprungligen hämtad från C plus objektorienterad. |
28 | Abstraktion | Inte närvarande | Närvarande |
29 | Information gömmer sig | Stöds inte | Stöds |
30 | Inkapsling | Stöds inte | Stöds |
31 | Polymorfism | Stöds inte | Stöds |
32 | Virtuell funktion | Stöds inte | Stöds |
33 | GUI-programmering | Använda Gtk-verktyget. | Använda Qt-verktygen. |
3. 4 | Kartläggning | Kan inte enkelt kartlägga data och funktioner. | Data och funktioner kan enkelt kartläggas. |
35 | Minneshantering | Malloc (), calloc (), gratis () funktioner. | Nya operatörer () och radera (). |
36 | Standardrubriker | Stdio.h | iostream-rubrik |
37 | Undantag / felhantering | Inget direkt stöd. | Stöds |
38 | Nyckelord | Stöder 32 nyckelord. | Stöder 52 nyckelord. |
39 | Mallar | Stöds inte | Stöds |
Vanliga frågor om C och C ++
Hittills har vi sett de viktigaste skillnaderna mellan C Vs C ++. Nu kommer vi att besvara några av de vanliga frågorna om C, C ++ och deras jämförelse.
F # 1) Varför används fortfarande C och C ++?
binärt trädimplementering i c ++ källkod
Svar: C och C ++ är fortfarande populära trots alltför många programmeringsspråk på marknaden. Den främsta anledningen är att C och C ++ ligger nära hårdvaran. För det andra kan vi nästan göra vad som helst med dessa språk.
Prestandan för C ++ är hög jämfört med andra språk. När det gäller inbyggd systemutveckling verkar C vara det självklara valet. Även om en storlek inte passar alla finns det några applikationer och projekt som endast kan utvecklas med C och C ++.
F # 2) Vilket är svårare C eller C ++? Eller vilket är bättre C eller C ++?
Svar: Egentligen är båda svåra och båda är lätta. C ++ bygger på C och stöder därmed alla funktioner i C och har också objektorienterade programmeringsfunktioner. När det gäller lärande är storleksmässigt C mindre med få begrepp att lära sig medan C ++ är stort. Därför kan vi säga att C är enklare än C ++.
När det gäller programmering måste du tänka i termer av den applikation som du utvecklar. Med tanke på den applikation som ska programmeras måste vi väga för- och nackdelarna med båda språken och bestämma vilken som är lättare att utveckla applikationen.
Avslutningsvis kan vi säga att det inte finns något definitivt svar på vilken som är svårare eller vilken som är bättre.
F # 3) Kan vi lära oss C ++ utan C? Är C ++ svårt att lära sig?
Svar: Ja, vi kan enkelt lära oss C ++ utan att veta C.
Således, med rätt tänkesätt och bra programmeringskunskap, kan du hoppa till C ++ utan att röra vid C. Eftersom C är en delmängd av C ++, kommer du alltid att få tag på C-språket när du lär dig C ++.
F # 4) Vilket är snabbare C eller C ++?
Svar: Egentligen beror detta på vilken funktion vi använder. Till exempel, om vi har använt objektorienterade programmeringsfunktioner som virtuell funktion i vårt C ++ - program kommer det här programmet att bli långsammare eftersom det alltid krävs extra ansträngningar för att underhålla virtuella tabeller och andra detaljer om virtuella funktioner.
Men om vi använder normala funktioner i C ++, kommer detta C ++ - program och alla andra C-program att ha samma hastighet. Det beror således på faktorer som applikationen som vi utvecklar, de funktioner vi använder osv.
F # 5) Är C ++ ett bra startspråk?
Svar: Svaret är ja och nej.
Det är ja eftersom vi kan lära oss vilket programmeringsspråk som helst om vi har rätt motivation, tid att investera och vilja att lära oss. Den enda förutsättningen är att du ska ha grundläggande datorkunskap och grundläggande programmeringsterminologi.
Så när vi börjar med C ++, så länge vi lär oss grunderna i språket och andra konstruktioner som slingor, beslutsfattande etc. är det ganska enkelt som alla andra språk.
Nu kommer vi till Ingen del.
Vi vet att C ++ är väldigt stort och har många funktioner. Så när vi utvecklar vårt lärande kan vi möta många utmaningar i C ++ programmering, så som nybörjare kanske vi inte kan hantera dem.
Tänk dig situationen när jag börjar med C ++ som första språk och jag stöter på minnesläcka !! Därför är det bra, till att börja med, enkla språk som Python eller Ruby för den delen. Få tag på programmeringen och gå sedan till C ++.
Slutsats
I den här handledningen har vi undersökt de viktigaste skillnaderna mellan C Vs C ++ - språk när det gäller olika funktioner.
Medan C är ett processpråk och C ++ är ett objektorienterat programmeringsspråk har vi sett att många funktioner är exklusiva för C ++. Eftersom C ++ härrör från C stöder den många av de funktioner som stöds av C.
I de efterföljande handledningarna kommer vi att fortsätta diskutera skillnader mellan C ++ och andra programmeringsspråk som Java och Python.
=> Kolla in hela C ++ träningsserien här
Rekommenderad läsning
- Pythons huvudfunktionshandledning med praktiska exempel
- Git vs GitHub: Utforska skillnaderna med exempel
- TDD vs BDD - Analysera skillnaderna med exempel
- 70+ BEST C ++ självstudier för att lära dig C ++ programmering GRATIS
- Funktioner för datum och tid i C ++ med exempel
- Hur datadriven testning fungerar (exempel på QTP och selen)
- Skalsortering i C ++ med exempel
- Python DateTime-handledning med exempel