Hallo en welkom.
In deze lezing wil ik praten over het initialiseren van een array.
We weten hoe we een array moeten gebruiken, we weten hoe we een array moeten maken.
Maar specifiek, wat als je wilt? om specifieke beginwaarden aan de array toe te kennen,
hoe doe je dat?
Dus u wilt een initiaal toewijzen waarden voor de elementen van
uw array meestal.
De reden dat je wilt beginwaarden toewijzen aan een array of
zelfs aan variabelen is omdat het maakt het gemakkelijker om te detecteren wanneer
er iets mis gaat.
Wanneer u geen initiële gegevens heeft en u probeert iets te doen, kunt u
problemen veroorzaken in uw programma.
Dus initialisatie is een zeer goede ding en je wilt het altijd doen.
En met behulp van een array is er veel, veel elementen in een array.
En dus is er een specifieke manier waarop u kunt die elementen initialiseren.
Er is anders syntaxis die u kunt gebruiken.
Maar initialisatie is een goede zaak en je wilt het altijd doen.
Ik wilde snel praten hoe je kunt een array doen omdat er verschillende manieren
zijn om het te doen.
Dus net zoals je een initiaal kunt toewijzen waarden aan variabelen, wanneer
ze zijn gedeclareerd, kunt u ook toewijzen beginwaarden voor de elementen
van een array, wanneer deze wordt gedeclareerd.
Om de waarden van een array te initialiseren, moet u: geef eenvoudig de waarden in een lijst op.
De lijst wordt gescheiden door komma's en de hele lijst is
ingesloten in een paar accolades.
Het ziet er ongeveer zo uit.
Hier creëren we een array met de naam tellers.
Het is van het type int, het heeft 5 elementen.
En wat we dan doen is dat we hebben de accolades
en we gebruiken hier geen indexen.
Je zult merken dat we net hebben getallen gescheiden door komma's.
Wat dit doet, is zijn instelling alle 5 elementen in de tellersreeks op
0, elk van de elementen is 0.
Als we een andere array hebben en we noemen deze array integers en het is
ook van grootte 5 en dan hebben we in onze accolades
na de toewijzingsoperator 0 komma 1 komma 2 komma 3 komma 4, wat doet dat?
Het wijst integer de eerste toe element integers array naar 0,
het tweede element naar 1, de derde element naar 2, het vierde element naar 3 en
het vijfde element naar 4.
Het is een mooie syntaxis waar je kunt initialiseer de array onmiddellijk wanneer
u deze declareert door gewoon te verstrekken getallen gescheiden door komma's tussen haakjes
en u wilt dit doen.
Het is ook niet nodig om volledig initialiseer de hele array.
Dus in die 2 vorige voorbeelden, we hebben alle 5 elementen
van een array van grootte 5 geïnitialiseerd.
Wat als je alleen wilt? enkele waarden initialiseren?
Als u initiële waarden opgeeft die niet gelijk zijn aan het getal van de grootte van de array, dan is de resterende waarden worden op 0 gezet.
Dus als je iets doet als hier heb je een
array met de naam voorbeeldgegevens van het type stroom, het bevat 500 elementen.
Maar in de accolades, allemaal zie je hier is onze 3 elementen.
Wat dit gaat doen is het gaat de
eerste 3 waarden van het monster initialiseren data-array naar 100 300 500. 5.
En dan de resterende 5 497 elementen worden 0.
Je hoeft dus niet alles specificeren.
Er is ook dit concept van een aangewezen initialisator.
Dit werd geïntroduceerd geloof ik in C99.
Het is een leuke kleine functie waar je kunt uw elementen kiezen en kiezen
die u wilt initialiseren.
Ik denk dat ze het in C99 hebben toegevoegd en toen maakten ze het in C11 optioneel.
Dus afhankelijk van welke compiler hebt, kunt u dit wel
of niet doen.
Maar ik wil het toch even noemen omdat het een beetje gebruikelijk is.
Sommige compilers staan dit niet toe: u om dit te doen na C99.
Maar het is cool omdat het kan eigenlijk gewoon kiezen en kiezen.
U kunt dus een element insluiten nummer tussen een paar haakjes en specificeer vervolgens de array-elementen
dat kan worden geïnitialiseerd en u kunt het in
elke gewenste volgorde doen.
Dus hier is een voorbeeld.
Nogmaals, we hebben onze voorbeeldgegevensarray.
Het is van het type float.
Het wordt 500 groot.
Maar hier binnenkant van onze krullend bretels, we hebben extra indexen.
We hebben onze haakjes in 2, zegt haakjes 2 sub-2 is gelijk aan 500. 5, sub-1 is gelijk aan
300. 0 en sub-0 is gelijk aan 100. 0.
Ze zijn gescheiden door komma's.
Dit alles doet is het specificeren hetzelfde als in het vorige voorbeeld, maar
het is doe het in een andere volgorde.
Maar je gaat nog steeds hebben elementen 0 of het eerste element gelijk
aan 100, de tweede element gelijk aan 300 en het derde album gelijk
aan 500. 5.
Maar we specificeren de welke index moet worden geïnitialiseerd
tussen de accolades.
Een ander voorbeeld hier hebben we een int array genaamd arr, het heeft de grootte 6.
En als we het aangeven, zijn we... initialiseren van
het vijfde element dat het laatste element is tot 212, alle elementen worden 0.
Dus hier is een voorbeeld van traditioneel initialisatie waarbij u gewoon de
naam van uw array declareert en je levert veel verschillende nummers.
In dit voorbeeld declareren we: een array en het
gaat alle dagen in elke maand opslaan.
En dus als we dit doormaken array en we printen het
uit, wat heel gebruikelijk is, je meestal gebruikt loops om elementen in een array af te drukken of
er op zijn minst overheen te itereren.
Wat we hier doen is dat we... ga gewoon elke maand afdrukken
en hoeveel dagen het heeft.
Dus laten we dit in code doornemen blokken om u de uitvoer te laten zien.
Dus hier is ons voorbeeld.
We hebben dagen en maanden en we initialiseren de array.
Het eerste element om te zijn 31, volgende 28, volgende 31.
Je merkt het ook op lijn 10, we zijn... een definitie gebruiken om een constante te creëren.
En trouwens in c, dat kan ook gebruik een constant trefwoord, waar we het over zullen hebben
en andere dingen, dat is een andere manier om constanten te creëren.
Maar op dit moment zijn we gewoon aan het
praten over arrays en het initialiseren ervan, heel gemakkelijk te doen, gescheiden door komma's tussen accolades.
Dus wat dit gaat weergeven? gaat
het door de array en gaat het kijken naar index plus 1 en dan dagen index.
Dus het wordt maand 1 heeft hoeveel dagen, afhankelijk van wat de waarden
zijn.
Dus we hebben toegang tot de index door de arraynaam en vervolgens de
subscriptwaarde, de index waarde en we gebruiken een array.
Het is dus een variabele die verandert door elke iteratie.
Dus we proberen dit uit te voeren.
De uitvoer die je gaat zie is maand één heeft 31 dagen, maand 2 heeft 28 dagen soort
vertegenwoordigt Januari Februari Maart April, maar het gaat gewoon door de
array en drukt de dagjes uit.
Dit bewijst dus dat de initialisatie werkt.
En nogmaals, je zult willen om uw gegevens te initialiseren.
Laten we het nu over een andere hebben voorbeeld en praat over
het herhalen van initialisatie-elementen.
Dus hier zou nog een voorbeeld zijn, maar in dit voorbeeld
gaan we een aangewezen initializer gebruiken.
We gaan de exacte specificeren elementen die we willen initialiseren.
Dus de hoofdregel die je moet merk op dat hier degene
is die zegt in dagen en maanden waar we doen onze initialisatie.
Je zult het opmerken in de
gekrulde haakjes dat het eerste element 31 krijgt, het tweede 28, maar dan is
er iets tussen haakjes dat 4 zegt, krijgt de waarde 31.
Dan hebben we een komma, element 5 krijgt 30,
element 6 krijgt 31.
En dan hebben we er 1.
Dit betekent dat we nu gaan overschrijf de 28, en we gaan eigenlijk een
29 zetten, zet het als 29.
Dus het is hier een beetje overbodig.
Dat hoeven we niet echt te doen, maar
je zou de sub-1 echt verwijderen omdat 31 en 28, sub-1 is hier al toegewezen.
Maar het lijkt erop dat we zeggen: sub-1 kan ook waarde 29 zijn.
Dus dit is gewoon het gebruik van de aangewezen initialisaties.
Wat als we willen? herhaal dezelfde waarde.
Nu in c, je kunt altijd initialiseer de hele array met
dezelfde waarde als u 0 opgeeft.
U kunt altijd initialiseren het is net als de null-parameter.
Maar behalve dat, c niet eventuele snelkoppelingsmechanismen bieden voor het
initialiseren van array elementen, althans niet in C89.
Mogelijk ziet u in C11 opnieuw waar u kan dezelfde waarde voor de hele array initialiseren
door alleen de haakjes te gebruiken zonder subscript alleen het nummer.
Maar op dit moment in C89 en C99, is er geen manier om een herhalingstelling op te geven.
Er is geen manier om alle elementen te zeggen van deze straal moet bijvoorbeeld 55 zijn.
Dus als het aanvankelijk gewenst was stel alle 500 waarden van
de voorbeeldgegevens in op 1, alle 500 zouden hebben expliciet worden toegewezen, wat een grote pijn
in de kont zou zijn.
Dus wat je uiteindelijk gaat doen, is dat je leg ze gewoon in een lus.
Makkelijkste manier om te herhalen gebruik een lus door een array.
Nou, hier is een snel voorbeeld van hoe u alle elementen met
dezelfde waarde kunt initialiseren.
In dit geval zijn we echter initialiseren van
de eerste elementen naar 0 1 4 9 en 16.
Dus dit is eigenlijk alleen maar aan het initialiseren alle overige elementen tot een waarde.
In wezen het 6e element van de 10e element met index 5 tot 9.
Dus dat is wat deze for loop doet.
De eerste for-lus zegt dat we gaan elementen van 5 tot 9
initialiseren om I keer I te zijn.
En dan de tweede voor lus hier, het moet
worden ingesprongen, het is moeilijker te lezen.
De tweede for-lus is eigenlijk door de hele
array gaan en alleen de gegevens weergeven om laten zien dat de laatste
5 waarden daadwerkelijk zijn geïnitialiseerd.
Dus wanneer je wilt herhalen dezelfde waarde of initialiseer naar
verschillende waarden, gebruik gewoon een lus.
Nogmaals, initialisatie is belangrijk.
U wilt initialiseren, dus zorg ervoor dat deze syntaxis een tweede natuur voor je
is, want we zullen nogal wat arrays gebruiken in c.