C definierar strängar som "pekare till en rad med bytes som slutar med null (h'00')", ungefär.
När du skriver : lcd_puts("TEXT SOM SKRIVS"); så tar kompilatorn hand om att
lagra texten och skapa en (intern) pekare till texten. Det är alltså *pekaren*
(d.v.s en adress, i princip) som skickas till lcd_puts, inte texten som sådan.
I Pascal kallas detta för "pass-by-reference (VAR)".
Är det (bara) ett annat sätt att skriva det?
Eller var det/mitt första exemplet fel och detta rätt?
Varför inte helt enkelt kommentera inlägget med ett
par ord så att man vet varför det gjordes?
Förlåt, jag sitter på bussen på mobilen.
Båda är OK .
"ditt" sätt skapar en pekare till ett minnesområde där texten lagras. "Mitt" sätt skapar en array av chars som innehåller exakt den mängd tecken som avses plus null-terminering.
Det finns väll en ganska stor skillnad, sodjan har med const i sin version. Vilket betyder att det hela blir en konstant (eller egentligen är det ju pekaren som blir konstant, innehållet den pekar på kan ju ändra sig, men i detta fall är även det definierat som en konstant...)
Ska strängen modifieras och ett varvtal tex skrivas in i den funkar Odurs version, där kan man modifiera enstaka tecken med sVarabel[10] = '3'; för att ändra 11 byten till en 3a..
Har med och har med...
Det "råkade" vara med i min cut-n-paste...
Det fanns ingen större tanke bakom det.
Men "const" eller inte har ju inte direkt med "strängar" att göra
som sådana, det är i princip samma betydelse oavsett datatyp.
Ok jag testade detta först (trodde jag) av allt innan jag frågade, eftersom det var nästan Pascal. Då funkade det inte. Nu funkar det, så förmodligen var jag trött och felstaven hade slunkit in.
Hur som helst så tackar jag för den bra förklaringen jag fick om pekare. Något som jag inte hade brytt mig om att fatta tidigare.