C vs. C++: Skillnader och likheter

By rik

C är grunden för C++. Medan C++ ofta används för skrivbordsapplikationer och spel, är C ett utmärkt val för nybörjare inom mjukvaruutveckling. Läs vidare för att förstå varför.

Vad är C?

C är ett strukturerat, högnivåprogrammeringsspråk. Program skrivna i C är portabla. C är fortfarande ett av de mest använda programmeringsspråken tack vare dess robusthet. Det används i komplexa program som inbyggda system, drivrutiner, kärnor, systemapplikationer, operativsystem som Microsoft Windows och Apple macOS, databaser som MySQL, och vissa IoT-applikationer.

C är ett kompilerat språk, vilket ger en abstraktionsnivå mellan maskinkoden och själva programmet.

Ett enkelt C-program som adderar två tal ser ut så här:

#include<stdio.h>
int main()
{
int a, b, sum;
printf("Ange två tal att addera: ");
scanf("%d%d", &a, &b);
sum = a + b;
printf("nSumman av %d och %d är %d", a, b, sum);
return 0;
}
  

Här är utmatningen:

Utdata från C-exempelprogrammet

C-programmet inkluderar `stdio.h` – standard input/output.

STDIO tillhandahåller basala input-output-funktioner som `printf` och `scanf`. `printf` används för att skriva ut data (meddelanden, resultat) i konsolen, medan `scanf` används för att läsa indata från konsolen. Vi använder `%d` för att ange att talen är heltal.

Om du anger decimaltal får du oväntade resultat. För att undvika detta kan du använda `%f`. `main()`-funktionen är den första funktionen som exekveras när programmet startar. Syntaxen är enkel – deklarera variabeltyper och använd dem sedan.

Vad är C++?

C++ bygger på objektorienterade principer som abstraktion, polymorfism, arv och inkapsling. C++ kan ses som en utökning av C med konceptet klasser och objekt.

Att använda objekt för att lagra data ger en tydlig struktur för program. Om du till exempel vill lagra information om en elev kan du skapa en klass `Elev` och definiera attribut som namn, ålder, hobbyer, betyg osv. Du kan sedan skapa ett verkligt elevobjekt när det behövs!

class Student {
public: 
char name[20];
int age;
float marks;
};

// Detta skapar ett objekt
Student student1 = new Student();
  

I praktiken skapas objektet och minne allokeras först under körning.

C++ erbjuder hög prestanda, vilket gör det till ett populärt val för att utveckla avancerade spelmotorer, inbyggda system, webbläsare, kompilatorer och grafikbaserade applikationer som bildbehandling.

Vissa databaser som MongoDB är skrivna i C++. Liksom C är C++ portabelt.

Låt oss skriva vårt tidigare adderingsprogram i C++ – observera de olika funktionerna.

#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "Ange talen: "; 
cin >> a >> b;
int sum = a + b;
cout << a << " + " << b << " = " << sum;
return 0;
}
  

Observera att vi använder `cout` och `cin` istället för `printf` och `scanf`. Variabeldeklarationer kan göras var som helst i programmet innan variabeln används (som variabeln `sum`). Utskriften är enkel med bara variabelnamnen. Vi använder namnutrymmet `std` från iostream-huvudet. `std` innehåller metoder som `cout`, `cin` och fler.

Likheter mellan C och C++

Man kan säga att C är en delmängd av C++. Det finns många likheter mellan C och C++, oavsett om det gäller hur program skrivs eller vilka applikationer de används för. Båda är robusta, portabla och högpresterande. Några viktiga likheter är:

Nr. Funktion Förklaring
1. Syntax Båda har samma syntax, som variabeldeklaration, semikolon i slutet av en rad, namnkonventioner etc.
2. Strukturell och procedurbaserad Varje kodrad körs i sekvens. Programmen är strukturerade på ett visst sätt – först importer, sedan variabeldeklarationer, och slutligen huvudkoden.
3. `main()`-funktion All kod som behöver köras måste finnas i `main()`-funktionen. `main()` anropas först när programmet körs.
4. Pekare Både C och C++ använder pekare på liknande sätt. En pekare är en variabel som lagrar minnesadressen till en annan variabel. Till exempel: `int a = 1;`. När den här koden körs tilldelas ett minne (säg `XX0011`) till `a`. Minnesplatsen för ’a’ kan nås genom att använda et-tecknet (&) som `int ptr_a = &a`.
5. Nyckelord och operatorer Alla nyckelord och operatorer i C är också giltiga i C++. Exempelvis `scope`, `static`, `public`, `int` etc. C++ har dessutom ytterligare operatorer och nyckelord.

Skillnader mellan C och C++

C++ skapades för att adressera vissa begränsningar i C och är en supermängd av C. Alla program skrivna i C kommer att fungera i C++, men inte tvärtom! Den största skillnaden mellan C och C++ är att C++ är baserat på objektorienterade principer (OOP). C++ lägger också mer vikt vid typkontroll. Det finns även subtila skillnader som listas nedan:

C C++
Utvecklades mellan 1969-1973 av Dennis Ritchie på AT&T Bell Labs. Utvecklades av Bjarne Stroustrup 1979.
Följer inte objektorienterade programmeringsprinciper. Baserat på OOP-koncept som inkapsling, polymorfism och arv.
C innehåller totalt 32 nyckelord som `char`, `switch`, `int`, `static`, `union` och andra. Alla C-nyckelord är giltiga i C++, och ytterligare 31 nyckelord finns också.
Stöder endast procedurprogrammering. C++ stöder flera programmeringsparadigm som OOP, generisk och funktionell programmering.
Vi kan inte implementera funktioner av OOP i C. Funktioner som vänner, virtuella funktioner i C++ förstärker kärnan i OOP.
C stöder inbyggda datatyper. C++ stöder både inbyggda och användardefinierade datatyper genom klasser.
Det finns möjlighet till operatörs- eller funktionsöverbelastning i C. C++ stöder både operator- och funktionsöverbelastning (polymorfism).
Minnesallokering görs med funktionerna `malloc()` och `calloc()`, och avallokering med `free()`. Minnesallokering sker med operatorn `new` och avallokering med operatorn `delete`.
C stöder inte undantagshantering. Stöder undantagshantering.
Fokuserar mer på proceduren eller metoden än data. Fokuserar mer på data.

Några andra viktiga funktioner som endast finns i C++ är:

  • Med hjälp av namnutrymmes-nyckelord kan vi skapa variabler med samma namn i olika namnutrymmen.
  • Vi kan använda funktioner inuti en struktur. Strukturer kan även ha access modifiers.
  • Stöder referensvariabler.

När ska man använda C eller C++?

Det är en vanlig diskussion bland programmerare – varför ska jag lära mig C när jag kan göra allt i C++?

Att lära sig C ger dig en stabil grund för datastrukturer, pekare, nyckelord, begreppen stack, heap och minnesallokering.

Dessutom används C fortfarande i stor utsträckning för högpresterande applikationer, eftersom C-kompilatorn är snabbare än C++-kompilatorn. Så om du ska skriva kod som inte kräver objekt, klasser, virtuella funktioner eller mallar, välj C eftersom C++ kan vara överflödig med sina omfattande bibliotek.

Den mesta lågnivåkoden som kärnor, operativsystem och databaser underhålls fortfarande i C. Att känna till C hjälper dig också att lära dig C++ snabbare.

C++ anses vara ett av de snabbaste och mest effektiva språken, vilket är anledningen till att det fortfarande är ett av de bästa programmeringsspråken, speciellt för högpresterande applikationer som spelmotorer, IoT-enheter och skrivbordsapplikationer. Många applikationer använder en kombination av C- och C++-kod för att uppnå optimal prestanda och fördelarna med objektorienterad programmering.

Sammanfattning

I denna artikel har vi lärt oss grunderna i C och C++ med ett enkelt exempelprogram. Vi har diskuterat de huvudsakliga skillnaderna och likheterna mellan de två språken, samt när man ska använda respektive språk.

Om du precis har påbörjat din mjukvaruutvecklingsresa kommer du få en självförtroende-boost genom att börja med C, eftersom det är enkelt och täcker alla programmeringskoncept som datastrukturer, pekare, minne och så vidare.

Du kan vara intresserad av att använda adminvista.com online C-kompilator och C++-kompilator.