Förklaringen till fråga 1:
s är en pekare på en 'const char', alltså en sträng som är konstant. Det kan vara att det finns många olika strängar i ROMen och de ska LCD'as ut. Konstanten är alltså dom som man pekar på men pekaren är ju olika för olika texter. Lite som "riktiga" adressor: på min postlåda står det ett namn och det kommer nog att stå där ett bra tag, på grannens likaså fast olika namn. Vi har även olika husnumre men vi är fastboende likaväl.
Så om du vill skicka brev till mig ska du använda _min_ adress, vill du skicka till grannen tar du en _annan_ adress, men namnen på postlådorna är konstanta likaväl.
'static'..... nåväl, here goes:
Kod: Markera allt
int MinLillaRutin(int EnSortsData)
{
static int KomHit1; // Jag vet att startkoden nollar hela RAM-minnet och därmed
denna
int KomHit2;
KomHit1++;
KomHit2++;
if(KomHit1 > 100)
{
Send2LCD("Nu räcker det!!!");
return(-1);
}
else
{
... // räkna en hel del o göra grejor
}
return(KomHit);
}
Variablen 'KomHit1' kommer att vara spärrad för andra rutiner, den finns enbart för 'int MinLillaRutin(int Data)' medan 'KomHit2' bara är fredat under tiden denna rutin körs. Den _kan_ men behöver inte återanvändas av andra rutiner, det beror på kompilern, ledigt minne osv.
'KomHit1' kommer alltså att stega upp 1 steg för varje gång man kallar denna lilla rutin, det gör 'KomHit2' också men dens minneslokation kan men måste inte användas av någon annan rutin och därmed är den osäker.
Med 'static' gör man helt enkelt så att minneslokationen reserveras den rutin som variablen deklareras i, deklareras den som 'const' "försvinnar" 'static'-funktionern då den är alldeles likgiltig.