Struktur (C-sprog)

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 2. april 2021; checks kræver 3 redigeringer .

I C -sproget er en struktur ( struct) en sammensat datatype, der indkapsler uden at skjule et sæt værdier af forskellige typer. Rækkefølgen, hvori værdier placeres i hukommelsen, er angivet, når typen defineres og bevares i hele levetiden af ​​objekter, hvilket tillader indirekte adgang (for eksempel gennem pointere ).

Eksempel på strukturdeklaration:

struct str_name { int medlem_1 ; flydemedlem_2 ; _ char member_3 [ 256 ]; /* ... */ }; // strukturerklæring struct str_name struct0 ; // erklæring og initialisering af strukturen struct str_name struct1 = { 1 , 3.1415f , "doit" /* ... */ }; // struct-erklæring og feltinitialisering // understøttet af standarden siden C99 struct str_name struct2 = {. medlem_1 = 2 , . medlem_2 = 3.1415f , . member_3 = "doit" /* ... */ };

Typen "struktur" i C tillader rekursion , det vil sige tilstedeværelsen i dens sammensætning af pointere, der refererer til objekter med netop denne struktur. Således kombinerer strukturer i C funktionaliteten af ​​ikke kun tupler og poster , men også algebraiske typer . For nem præsentation siges en struct at være en klasse, hvis standardfelter alle er offentlige [1] .

I C++ blev begrebet struktur udvidet til klasse , det vil sige, at muligheden for at inkludere metodefunktioner i strukturen blev tilføjet . Den største forskel er, at strukturer ifølge "reglen om tre" altid har en konstruktør , selvom den ikke er eksplicit defineret i kildekoden. Derfor er det ikke korrekt at tale om " structs in C++ ". Det samme gælder for C# .

Go - sproget bruger strukturer, der i funktionalitet er tæt på klasser (metoder kan knyttes til strukturen), selvom nogle OOP- principper mangler (f.eks. arv )

Noter

  1. struct (C++) . C++ sprogreference . msdn.microsoft.com. Hentet 16. november 2017. Arkiveret fra originalen 16. november 2017.