? Programmerare använder programmeringsspråket C för system programvara och lågaktivt kod . På grund av detta är en av språket C skapandet av komplexa datastrukturer. Dessa strukturer innehåller uppgifter samlas in tillsammans , ofta står för en större del av data med många relevanta värden . Åtkomst dessa värden innebär referera till dem med strukturen enligt någon av de särskilda " prick " och " pil " anteckningar ( beroende på situationen ) . C Structures
Skapa en komplex datatyp i C handlar om att skapa vad som kallas en struktur med hjälp av " struct " nyckelordet . Dessa strukturer kommer vanligtvis att innehålla två eller fler enskilda variabler , och representerar en sammanhängande datatyp (snarare än bara fungerar som en samling av slumpmässigt data ) . Till exempel står det följande C struktur en nod i en större datastruktur , och innehåller en bit data , och en pekare till en annan struktur av samma typ :
struct Node {
int uppgifter = 1;
struct * Nod nästa ,
};
Pekare
Inom " Node " struktur existerar en pekare till en annan Node struktur. Pekare till strukturer är mycket vanliga vid passage struktur variabler till funktioner . De är också en faktor när man beslutar vilken notation en programmerare bör använda för att referera strukturera data . Pekare skapar ett minne referens till en datatyp , snarare än att skapa en grund variabel för datatypen . Så i följande exempel , förklarar den första deklarationen en rörlig struktur i en lokal räckvidd , vilket betyder att den måste kopieras och flyttas runt . Den andra förklaringen deklarerar en pekare till en struktur i minnet som gör att saker såsom dynamisk minnesallokering :
struct Node x ;
struct * Node y ,
punktnotation
notation krävs för åtkomst till data i strukturer beror på sammanhanget av strukturen . Om programmeraren förklarar en struktur variabel som en lokal variabel , då hon kommer åt data via dot notation . Dot notation ansluter helt enkelt en struktur variabel och en datastruktur medlem genom en punkt symbol ( ".") . Följande exempel visar hur programmeraren skulle hämta data från en nod variabel genom punktnotation :
struct Node x ;
int j = x.data , //j nu motsvarar en
Arrow Notation
annat sammanhang för att hämta data från strukturer är när programmeraren har en pekare till en struktur snarare än en lokal variabel . När programmeraren skapar en pekare till en struktur , två saker måste hända . Först måste hon förklara strukturen pekaren . Andra måste hon allokera minne så att pekaren referenser minne med rätt storlek . Då kan hon använda pil notation ( " - > " ) för att komma åt data :
struct * Node y ,
y = malloc ( sizeof ( struct Node ) ) , //allokerar minne att y i storleken av en nod struct
int j = y -> uppgifter, //heltal j nu är lika med en