Je denkt veel te moeilijk - komt vaker voor bij mensen die nooit fatsoenlijk assembly geleerd hebben.
Goed, je hebt een stuk text en daar wil je wat mee. In dit geval naar het display sturen. Kort door de bocht zijn er 2 mogelijkheden: je houdt bij hoe lang het is en waar het begint (zo doet pascal het). Of je houdt bij waar het begint en gebruikt een 'special character' wat anders nooit voor zal komen als terminator (zo doet C het).
Voor beide methoden is wat te zeggen. Bij de eerste is de lengte beperkt (immers, in Pascal is de 'length' een byte, en daarmee je string beperkt tot 255 characters). Bij de 2de is de soort van data die je erin kunt douwen beperkt (nl. een 0 als waarde is 'einde', dus die kun je nooit opslaan). Voor dingen die weergegeven moeten worden, is dat prima. Immers, ASCII 0 is niets zichtbaars.
Als je dus (in C) een array van 20 elementen declareert, dan kun je er dus 19 characters en 1 terminator in kwijt (ja, die fout wordt vaak gemaakt).
Wat ZOU KUNNEN (en dat hoeft dus zeer zeker niet zo te zijn), is dat de maker van de lib eea. 1-op-1 op het display laat matchen. Dat zou die 20 characters verklaren. Erg onhandig, want als je een strcpy zou gebruiken met 20 chars, dan schrijf je dus 1 byte te ver - en dus over wat anders heen. Dit is dus de manier om stack plat te schrijven en op een PC je eigen code uit te voeren.
Waarom het een array is? Welnu, ik denk dat dat gewoon makkelijk uit kwam in de syntax.
Daarnaast zit C redelijk dicht tegen assembly aan. In assembly moet je ook gewoon 20 bytes declareren en zelf bepalen welk mechanisme je gebruikt. Dat zit in je library functions, niet direct in je taal. Dit is de 1-op-1 vertaling ervan.
[Bericht gewijzigd door
EricP
op zondag 5 juli 2020 11:12:51
(13%)