C er eit generelt, prosedyrebasert programmeringsspråk som har hatt stor innverknad på utviklinga av mange moderne programmeringsspråk. Det er designa for å vere effektivt og fleksibelt, og blir vanlegvis brukt til systemprogrammering, utvikling av operativsystem og oppretting av applikasjonsprogramvare. C gir lågnivå tilgang til minne og tillèt bitmanipulering, noko som gjer det til eit føretrekt val for å skrive programvare som er kritisk for ytelse.
C blei utvikla på tidleg 1970-tal av Dennis Ritchie ved Bell Labs som ein evolusjon av B-språket, som var påverka av BCPL og ALGOL. Opprinneleg var det meint for systemprogrammering på Unix-operativsystemet, som også oppstod ved Bell Labs. Språket sitt design fokuserte på å gi ein høgnivå abstraksjon over assembler-språk samtidig som det beheldt effektiviteten til lågnivå programmering.
På slutten av 1970-talet fekk C brei aksept i programmeringsmiljøet, og publiseringa av "The C Programming Language" av Brian Kernighan og Dennis Ritchie i 1978 bidrog sterkt til populariteten. Den første standardiserte versjonen, kalla C89 eller ANSI C, blei vedteken av American National Standards Institute (ANSI) i 1989. Den internasjonale standardiseringsorganisasjonen (ISO) vedtok seinare denne, noko som resulterte i ISO C99 i 1999, som introduserte fleire nye funksjonar som inline-funksjonar og variabel-lengde array. Den mest nyaste store standarden, C11, blei publisert i 2011, og C18, ein feilrettingsutgåve, kom i 2018.
C er framleis eit av dei mest brukte programmeringsspråka i verda, spesielt innan systemprogrammering, innebygde system og høgtytande applikasjonar. Syntaxen og konsepta har påverka mange andre språk, inkludert C++, C#, Java og Objective-C. Den pågåande relevansen kan sjåast i operativsystem (Linux, Windows), nettverksprogrammering, innebygde system og ulike oppgåver innan høgtytande databehandling.
C tillèt direkte manipulering av minne gjennom pekarar. For eksempel:
int x = 10;
int *p = &x; // Pekar p held adressa til x
C støttar strukturert programmering gjennom funksjonar, som gjer koden modulær. Ein enkel funksjonsdefinisjon ser slik ut:
void greet() {
printf("Hello, World!\n");
}
C inkluderer ulike kontrollflyt-strukturar som if, switch, for, while, og do-while, som legg til rette for beslutningstaking.
if (x > 0) {
printf("Positivt tal\n");
}
C har fleire innebygde datatypar: int, char, float, double, osv. Det støttar også brukardefinerte datatypar ved hjelp av strukturar.
struct Point {
int x;
int y;
};
C inkluderer eit rikt sett av bibliotek for inn- og utdataoperasjonar, strengebehandling og matematiske berekningar.
#include <stdio.h>
#include <math.h>
double sqrtValue = sqrt(16);
C tillèt eksplisitt typekonvertering, som er nyttig for å konvertere mellom typar.
double pi = 3.14;
int intPi = (int)pi; // intPi vil vere 3
C støttar enumtypar for å lage tilpassa typar.
enum Color { RED, GREEN, BLUE };
C inkluderer preprosessor direktiv som #define, #include, som handterer kode før kompilering.
#define PI 3.14
C tillèt variabeldeklarasjonar innanfor eit spesifikt omfang, noko som aukar innkapslinga.
{
int temp = 5; // temp er berre gyldig innanfor denne blokka
}
C støttar ikkje funksjonsoverlasting som C++, men det tillèt standardargument gjennom manuell implementering.
int add(int a, int b) {
return a + b;
}
C krev ein kompilator for å omdanne kildekode til maskinkode. Dei mest populære kompilatorane inkluderer GCC (GNU Compiler Collection), Clang, og MSVC (Microsoft Visual C++).
For å kompilere eit C-program kan du vanlegvis bruke ein kommando som:
gcc -o myprogram myprogram.c
Dette kompilerer myprogram.c
til ein kjørbar fil kalla myprogram
.
Flere IDE-ar støttar C-programmering, som:
Desse IDE-ane tilbyr funksjonar som syntaksutheving, feilsøkingsverktøy, og prosjektleiing.
C blir brukt i stor grad innan ulike domener, inkludert:
C blir ofte samanlikna med fleire andre programmeringsspråk, sidan det deler likskapar og fungerer som eit grunnlag for mange:
C kan lett oversettast til språk som støttar prosedyrebaserte programmeringskonstruksjonar og lågnivå optimaliseringar. Når ein oversettar C-kode til eit høgnivå språk, bør utviklarar vere merksame på forskjellar i minnehåndtering, sidan høgnivå språk ofte har søppelrydding.
Flere kilde-til-kilde oversettingsverktøy kan hjelpe med å konvertere C-kode til andre språk, inkludert: