c vs c 39 main differences between c
Aquest tutorial explica les diferències clau entre els idiomes C vs C ++ en termes de diverses funcions:
El llenguatge C ++ és un subconjunt del llenguatge C.
C ++ es va dissenyar per primera vegada com una extensió del llenguatge C. Així, a més de les funcions del llenguatge procedimental derivades de C, C ++ també admet funcions de programació orientades a objectes com herència, polimorfisme, abstracció, encapsulació, etc.
En aquest tutorial, comentem algunes de les principals diferències entre el llenguatge C i C ++.
Lectura suggerida => Guia perfecta de C ++ per a principiants
Què aprendreu:
- Característiques clau de C i C ++
- Diferències clau entre C i C ++
- Format tabular: C Vs C ++
- Preguntes més freqüents sobre C i C ++
- Conclusió
- Lectura recomanada
Característiques clau de C i C ++
Abans de continuar amb les diferències, anem a enumerar algunes de les funcions del llenguatge C i C ++.
Característiques i propietats de C
- Processal
- Enfocament de baix a dalt.
- Llenguatge de programació del sistema.
- No admet classes ni objectes.
- Admet punters
Característiques i propietats de C ++
- Orientat a objectes
- Enfocament de baix a dalt
- La velocitat és més ràpida.
- Suport de biblioteques enriquides en forma de biblioteca de plantilles estàndard.
- Admet punters i referències.
- Compilat
Diferències clau entre C i C ++
A continuació es detallen les principals diferències entre C i C ++.
# 1) Tipus de programació:
C és un llenguatge procedimental en què el programa gira al voltant de les funcions. Tot el problema es divideix en nombroses funcions. El programa se centra principalment en funcions o procediments per fer les coses.
C ++, per contra, és un llenguatge de programació orientat a objectes. Aquí les dades del problema són el focus principal i les classes es basen en aquestes dades. Les funcions operen sobre les dades i estan íntimament lligades a les dades.
# 2) Enfocament de programació:
Com que C és un llenguatge procedimental, segueix un enfocament de programació de dalt a baix. Aquí prenem el problema i després el dividim en subproblemes fins que trobem subproblemes únics que es poden resoldre directament. A continuació, combinem les solucions per obtenir la solució principal.
C ++ segueix un enfocament ascendent de la programació. En això, comencem amb un disseny o codificació de baix nivell i, a continuació, basem-nos en aquest disseny de baix nivell per obtenir una solució d’alt nivell.
# 3) Desenvolupament d'aplicacions:
El llenguatge C és útil en la programació de sistemes incrustats o implementacions de baix nivell.
C ++, en canvi, és més adequat per a aplicacions del servidor, aplicacions de xarxa o per a aplicacions com ara jocs, etc.
quin dels següents no es troba en l'estat de la prova del sistema?
# 4) Extensió de fitxer:
Els programes escrits en C se solen desar amb l'extensió '.c' mentre que els programes C ++ es guarden amb l'extensió '.cpp'.
# 5) Compatibilitat entre si:
C ++ és un subconjunt de C a mesura que es desenvolupa i pren la majoria de les seves construccions procedimentals del llenguatge C. Així, qualsevol programa C compilarà i funcionarà bé amb el compilador C ++.
No obstant això, el llenguatge C no admet funcions orientades a objectes de C ++ i, per tant, no és compatible amb els programes C ++. Per tant, els programes escrits en C ++ no s’executaran en compiladors C.
# 6) Compatibilitat amb altres idiomes:
El llenguatge C ++ és generalment compatible amb altres llenguatges de programació genèrics, però el llenguatge C no ho és.
# 7) Facilitat de codificació:
Podem dir que C és un llenguatge pràctic i el podem programar de la manera que vulguem. C ++ consisteix en algunes construccions de programació orientades a objectes d’alt nivell que ens ajuden a codificar programes d’alt nivell.
Per tant, si diem que C és fàcil, llavors C ++ també és més fàcil de codificar.
# 8) Seguretat de dades:
A C, l’èmfasi principal es posa en funcions o procediments més que en dades. Per tant, pel que fa a la seguretat de les dades, és insignificant a C.
A C ++, ja que tractem de classes i objectes, el bloc principal del programa és Data. Per tant, les dades estan estretament protegides mitjançant classes, especificadors d’accés, encapsulació, etc.
# 9) Divisió del programa:
Un programa en C es divideix en funcions i mòduls. Aquestes funcions i mòduls són anomenats per la funció principal o altres funcions per a l'execució.
Un programa C ++ es divideix en classes i objectes. El problema es dissenya en classes i els objectes d'aquestes classes són les unitats d'execució creades per les funcions principals i executades.
# 10) Operacions d'E / S estàndard:
Les operacions d’entrada-sortida estàndard en C per llegir / escriure dades des del dispositiu estàndard són ‘scanf’ i ‘printf’ respectivament.
A C ++, les dades es llegeixen des del dispositiu d’entrada estàndard mitjançant ‘cin’ mentre s’imprimeixen al dispositiu de sortida mitjançant ‘cout’.
# 11) Enfocament / èmfasi:
En ser un llenguatge procedimental, C posa més èmfasi en la seqüència de passos o procediments per resoldre un problema.
C ++, en canvi, està orientat a objectes i, per tant, posa més èmfasi en objectes i classes al voltant dels quals s’ha de construir la solució.
# 12) La funció principal ():
A C ++ no podem cridar una funció main () des de cap altre punt. La funció main () és el punt d'execució únic.
No obstant això, en llenguatge C, podem tenir una funció main () anomenada per les altres funcions del codi.
# 13) Variable:
Les variables s’han de declarar al començament del bloc de funcions en C, al contrari, podem declarar variables en qualsevol lloc d’un programa C ++ sempre que es declaren abans d’utilitzar-les al codi.
# 14) Global Variables:
El llenguatge C permet múltiples declaracions de variables globals. C ++, però, no permet múltiples declaracions de variables globals.
# 15) Punters i variables de referència:
Els indicadors són les variables que apunten a adreces de memòria. Tant C com C ++ admeten indicadors i diverses operacions realitzades amb indicadors.
com puc obrir fitxers apk
Les referències actuen com a àlies de les variables i apunten a la mateixa ubicació de memòria que una variable.
El llenguatge C només admet punteres i no referències. C ++ admet punteres i referències.
# 16) Enumeracions:
Podem declarar enumeracions tant en C com en C ++. Però en C, les constants d’enumeració són de tipus Enter. És el mateix que declarar una constant sencera sense cap tipus de seguretat.
A C ++, les enumeracions són diferents. Són de diferents tipus. Per tant, per assignar un tipus enter a una variable d’un tipus enumerat, necessitem una conversió de tipus explícita.
Tot i això, podem assignar un valor enumerat a una variable de tipus enter ja que el tipus enumerat permet la promoció integral o la conversió implícita.
# 17) Cordes:
Pel que fa a les cadenes, la declaració «char []» declara una matriu de cadenes. Però quan la cadena declarada anteriorment es passa entre les funcions, no hi ha cap garantia que les altres funcions externes no la canviaran, ja que aquestes cadenes són mutables.
Aquest inconvenient no existeix a C ++, ja que C ++ admet tipus de dades de cadena que defineixen cadenes immutables.
# 18) Funció en línia:
Les funcions en línia no s'admeten a C. C normalment funciona amb macros per accelerar l'execució. En C ++, en canvi, s’utilitzen funcions en línia, així com macros.
# 19) Arguments predeterminats:
Els arguments / paràmetres per defecte s’utilitzen quan els paràmetres no s’especifiquen en el moment de la trucada a la funció. Especifiquem valors predeterminats per a paràmetres a la definició de funció.
El llenguatge C no admet els paràmetres predeterminats. Mentre que C ++ admet l'ús d'arguments per defecte.
# 20) Estructures:
Les estructures en C i C ++ utilitzen el mateix concepte. Però la diferència és, en C, ja que no podem incloure funcions com a membres.
C ++ permet a les estructures tenir funcions com a membres.
# 21) Classes i objectes:
C és un llenguatge procedimental i, per tant, no admet el concepte de classes i objectes.
D'altra banda, C ++ admet el concepte de classes i objectes i gairebé totes les aplicacions de C ++ es construeixen al voltant de classes i objectes.
# 22) Tipus de dades:
C admet tipus de dades integrats i primitius. Contràriament a això, C ++ admet tipus de dades definits per l'usuari, a més dels tipus de dades integrats i primitius.
A part d'això, C ++ també admet tipus de dades booleans i de cadenes que no són compatibles amb C.
# 23) Sobrecàrrega de funcions:
La sobrecàrrega de funcions és la possibilitat de tenir més d’una funció amb el mateix nom però paràmetres diferents o una llista de paràmetres o ordre de paràmetres.
Aquesta és una característica important de la programació orientada a objectes i està present a C ++. Tot i això, C no admet aquesta característica.
# 24) Herència:
L'herència també és una característica important de la programació orientada a objectes que és compatible amb C ++ i no amb C.
# 25) Funcions:
C no admet funcions amb arranjaments predeterminats, com ara paràmetres predeterminats, etc. C ++ admet funcions amb arranjaments predeterminats.
# 26) Espai de noms:
Els espais de noms no són compatibles amb C, però són compatibles amb C ++ .
# 27) Codi font:
C és un llenguatge de format lliure que ens permet programar qualsevol cosa. C ++ es deriva de C i també té funcions de programació orientades a objectes que el fan més eficient pel que fa al codi font.
# 28) Abstracció:
L’abstracció és la manera d’ocultar els detalls de la implementació i d’exposar només a la interfície necessària a l’usuari. Aquesta és una de les característiques distintives de la programació orientada a objectes.
C ++ admet aquesta característica mentre que C no.
# 29) Encapsulació:
L’encapsulació és una tècnica que permet encapsular les dades del món exterior. Això ajuda a amagar informació.
C ++ utilitza classes que agrupen dades i les funcions que operen en aquestes dades en una sola unitat. Això és encapsulació. C no té aquesta característica.
# 30) Ocultació d'informació:
Les característiques de l’abstracció i l’encapsulament poden ajudar a amagar la informació exposant només a l’usuari els detalls requerits i ocultant detalls com la implementació, etc. D’aquesta manera podem millorar la seguretat de les dades dels nostres programes.
C ++ posa un gran èmfasi en les dades i utilitza l’abstracció i l’encapsulació per amagar la informació.
C no posa èmfasi en les dades i no tracta l’amagatament de la informació.
# 31) Polimorfisme:
El polimorfisme significa simplement que un objecte té moltes formes i és una característica essencial de la programació orientada a objectes. En ser un llenguatge orientat a objectes, C ++ admet el polimorfisme.
C no té suport per a la programació orientada a objectes i no admet polimorfisme. Tot i així, podem simular l’enviament dinàmic de funcions en C mitjançant punteres de funcions.
# 32) Funció virtual:
Les funcions virtuals també anomenades polimorfisme en temps d'execució són una tècnica que s'utilitza per resoldre les trucades de funcions en temps d'execució. Aquesta és una característica més de la programació orientada a objectes que és compatible amb C ++ i no amb C.
# 33) Programació GUI:
Per a la programació relacionada amb la interfície gràfica d'usuari (GUI), C utilitza eines Gtk mentre que C ++ utilitza eines Qt.
# 34) Cartografia:
Pel que fa al mapatge de dades amb funcions, el llenguatge C és molt complicat ja que no manté cap enfocament en les dades.
Mentre que C ++ té un bon mapatge de dades i funcions, ja que admet classes i objectes que uneixen dades i funcions.
# 35) Gestió de la memòria:
Tant C com C ++ tenen una gestió manual de la memòria, però la manera com es fa la gestió de la memòria és diferent en els dos idiomes.
A C fem servir funcions com malloc (), calloc (), realloc (), etc., per assignar memòria i la funció free () per alliberar la memòria. Però, en C ++, fem servir operadors new () i delete () per assignar i repartir la memòria respectivament.
# 36) Capçaleres predeterminades:
Les capçaleres predeterminades contenen les trucades de funcions habituals que s’utilitzen en llenguatges de programació principalment per a entrada-sortida, etc.
A C, ‘stdio.h’ és la capçalera predeterminada que s’utilitza mentre que C ++ s’utilitza com a capçalera predeterminada .
# 37) Excepció / Gestió d'errors:
C ++ admet la manipulació d’excepcions / errors mitjançant els blocs try-catch. C no admet la manipulació d’excepcions directament, però podem solucionar errors utilitzant alguna solució alternativa.
# 38) Paraules clau:
C ++ admet moltes més paraules clau que la de C. De fet, C només té 32 paraules clau, mentre que C ++ té 52 paraules clau.
# 39) Plantilles:
Les plantilles ens permeten definir classes i objectes independentment del tipus de dades. Mitjançant plantilles, podem escriure codi genèric i anomenar-lo per a qualsevol tipus de dades.
C ++, orientat a objectes, utilitza classes i objectes i, per tant, admet plantilles. C, en canvi, no admet el concepte de plantilles.
Format tabular: C Vs C ++
no | Característiques | C | C ++ |
---|---|---|---|
7 | Facilitat de codificació | Ens permet codificar-ho tot. | Inclou conceptes orientats a objectes molt avançats. |
1 | Tipus de programació | Llenguatge procedimental | Llenguatge de programació orientat a objectes. |
2 | Enfocament de programació | Enfocament de dalt a baix | Enfocament de baix a dalt |
3 | Desenvolupament d'aplicacions | Ideal per a dispositius incrustats, codificació a nivell de sistema, etc. | Ideal per a xarxes, aplicacions del servidor, jocs, etc. |
4 | Extensió de fitxer | .c | .cpp |
5 | Compatibilitat entre si | No és compatible amb C ++. | Compatible amb C, ja que C ++ és un subconjunt de C. |
6 | Compatibilitat amb altres idiomes | No compatible | compatible |
8 | Seguretat de dades | Despreciable | Alt |
9 | Divisió del programa | Programa dividit en funcions. | Programa dividit en classes i objectes. |
10 | Operacions d'E / S estàndard | scanf / printf | cin / cost |
11 | Enfocament / èmfasi | Destaca les funcions i / o processos. | Destaca les dades en lloc de les funcions. |
12 | La funció principal () | Pot trucar a la xarxa principal mitjançant altres funcions. | No és possible trucar al principal des de cap punt. |
13 | variables | A declarar al començament de la funció. | Es pot declarar a qualsevol lloc del programa. |
14 | global variables | Múltiples declaracions | No hi ha declaracions múltiples. |
15 | Variables i indicadors de referència | Només indicadors | Tots dos |
16 | Enumeracions | Només els tipus enters. | Tipus distint |
17 | Cordes | Només admet caràcters [] | Admet la classe de cadena que és immutable. |
18 | Funció en línia | No compatible | Compatible |
19 | Arguments per defecte | No compatible | Compatible |
20 | Estructures | No poden tenir funcions com a membres de l'estructura. | Pot tenir funcions com a membres de l'estructura. |
21 | Classes i objectes | No compatible | Compatible |
22 | Tipus de dades | Només s'admeten tipus de dades integrats i primitius. No hi ha cap tipus de cadena o booleà. | S'admeten tipus de cadenes booleans i de tipus de dades integrats. |
23 | Funció de sobrecàrrega | No compatible | Compatible |
24 | Herència | No compatible | Compatible |
25 | Funcions | No admet funcions amb arranjaments predeterminats. | Admet funcions amb arranjaments predeterminats. |
26 | Espai de noms | No compatible | Compatible |
27 | Codi font | De format lliure | Originalment extret de C més orientat a objectes. |
28 | Abstracció | No present | Present |
29 | Ocultació d'informació | No compatible | Compatible |
30 | Encapsulació | No compatible | Compatible |
31 | Polimorfisme | No compatible | Compatible |
32 | Funció virtual | No compatible | Compatible |
33 | Programació GUI | Utilitzant l'eina Gtk. | Utilitzant les eines Qt. |
34 | Cartografia | No es poden assignar fàcilment dades i funcions. | Les dades i les funcions es poden mapar fàcilment. |
35 | Gestió de la memòria | Funcions malloc (), calloc (), free (). | Operadors New () i delete (). |
36 | Capçaleres predeterminades | Stdio.h | capçalera iostream |
37 | Gestió d’excepcions / errors | Sense suport directe. | Compatible |
38 | Paraules clau | Admet 32 paraules clau. | Admet 52 paraules clau. |
39 | Plantilles | No compatible | Compatible |
Preguntes més freqüents sobre C i C ++
Fins ara hem vist les diferències clau entre C Vs C ++. Ara respondrem algunes de les preguntes més freqüents sobre C, C ++ i la seva comparació.
P # 1) Per què encara s’utilitzen C i C ++?
Respostes: C i C ++ encara són populars malgrat massa llenguatges de programació al mercat. La raó principal és que C i C ++ són a prop del maquinari. En segon lloc, gairebé podem fer qualsevol cosa amb aquests idiomes.
El rendiment de C ++ és alt si es compara amb altres idiomes. Quan es tracta de desenvolupament de sistemes incrustats, C sembla ser l’elecció òbvia. Tot i que una talla no s’adapta a tots, hi ha algunes aplicacions i projectes que només es poden desenvolupar amb C i C ++.
Q # 2) Què és més difícil C o C ++? O quin és millor C o C ++?
Respostes: En realitat, tots dos són difícils i tots dos són fàcils. C ++ es basa en C i, per tant, admet totes les funcions de C i també té funcions de programació orientades a objectes. A l’hora d’aprendre, el C en funció de la mida és més petit, amb pocs conceptes a aprendre mentre que el C ++ és ampli. Per tant, podem dir que C és més fàcil que C ++.
A l’hora de programar, heu de pensar en termes de l’aplicació que esteu desenvolupant. Per tant, donada l’aplicació a programar, hem de ponderar els pros i els contres de tots dos idiomes i decidir quina és més fàcil desenvolupar l’aplicació.
Per concloure, podem dir que no hi ha una resposta definida sobre quina és més difícil o quina és millor.
P # 3) Podem aprendre C ++ sense C? És difícil aprendre C ++?
Respostes: Sí, podem aprendre C ++ fàcilment sense conèixer C.
Per tant, amb la mentalitat adequada i un bon coneixement de programació, podeu saltar a C ++ sense tocar C. Com que C és un subconjunt de C ++, en el curs d’aprendre C ++, sempre obtindreu el llenguatge C.
Q # 4) Què és més ràpid C o C ++?
Respostes: En realitat, això depèn de la funció que fem servir. Per exemple, si hem utilitzat funcions de programació orientades a objectes, com ara la funció virtual, al nostre programa C ++, és probable que aquest programa sigui més lent ja que sempre cal fer esforços addicionals per mantenir les taules virtuals i la resta de detalls sobre les funcions virtuals.
Però si fem servir funcions normals a C ++, aquest programa C ++ i qualsevol altre programa C tindran la mateixa velocitat. Per tant, depèn de factors com l'aplicació que estem desenvolupant, les funcions que estem utilitzant, etc.
P # 5) C ++ és un bon llenguatge inicial?
Respostes: La resposta és sí i no.
Sí, perquè podem aprendre qualsevol llenguatge de programació si tenim la motivació adequada, el temps per invertir i la voluntat d’aprendre. L’únic requisit previ és que tingueu coneixements bàsics d’informàtica i una terminologia bàsica de programació.
Per tant, quan comencem amb C ++, sempre que aprenguem els conceptes bàsics del llenguatge i altres construccions com bucles, presa de decisions, etc., és bastant fàcil com qualsevol altre idioma.
Ara no arribarem a cap part.
Sabem que C ++ és molt gran i té moltes funcions. Així, a mesura que avancem en el nostre aprenentatge, és possible que ens enfrontem a molts desafiaments en la programació de C ++, de manera que com a novell potser no serem capaços de gestionar-los.
Imagineu la situació quan començo amb C ++ com a primer llenguatge i em trobo amb fuites de memòria !! Per tant, és bo, per començar, llenguatges senzills com Python o Ruby per a la matèria. Preneu la programació i, a continuació, aneu a C ++.
c ++ exemple de classe de llista doblement enllaçada
Conclusió
En aquest tutorial, hem explorat les principals diferències entre els llenguatges C Vs C ++ en termes de diverses funcions.
Tot i que C és un llenguatge de procediment i C ++ és un llenguatge de programació orientat a objectes, hem vist que moltes funcions són exclusives de C ++. Com que C ++ es deriva de C, és compatible amb moltes de les funcions compatibles amb C.
En els següents tutorials, continuarem discutint les diferències entre C ++ i altres llenguatges de programació com Java i Python.
=> Mireu aquí la sèrie completa d’entrenament de C ++
Lectura recomanada
- Tutorial de funcions principals de Python amb exemples pràctics
- Git contra GitHub: exploreu les diferències amb exemples
- TDD Vs BDD: analitzeu les diferències amb exemples
- 70+ BEST Tutorials C ++ per aprendre programació C ++ GRATIS
- Funcions de data i hora a C ++ amb exemples
- Com funcionen les proves impulsades per dades (exemples de QTP i seleni)
- Ordenació de shell en C ++ amb exemples
- Tutorial de Python DateTime amb exemples