Sjaak de Lange
Artikelen: 0
Berichten: 220
Lid geworden op: wo 11 jul 2012, 09:44

C string en array

hallo ik ben net begonnen met c programmeren en wil graag weten hoe de koppeling gemaakt word met een array en string. In het onderstaande programma word eerst een array aangemaakt en later word deze aangeroepen:

char str[80];

deze word hier aangeroepen in een subroutine

void writeString (const char *words)
{
while (*words) brackets
{
lcdInfo = *words; lcdInfo
lcdOut ();
*words ++;
}
}

is het zo dat de array str automatisch gekoppeld word aan de Subroutine writeString?
ik heb begrepen dat deze routine open Source is maar kan niet goed zien hoe de koppeling plaatsvind. Wellicht dat iemand mij hier meer over kan vertellen
Gebruikersavatar
irArjan
Artikelen: 0
Berichten: 388
Lid geworden op: vr 23 okt 2009, 13:04

Re: C string en array

In C gaat niks automatisch ;).

Maar het lijkt erop dat er een paar concepten zijn die je nog niet helemaal begrijpt. Je schrijft 'ik heb begrepen dat deze routine open Source is'. Verwijs je hier met 'deze routine' naar de writeString routine? Die lijkt inderdaad Open Source want de code staat in jouw post. Of bedoel je iets anders?

Verder, de regel

char str[80];

doet niks anders dan een stukje geheugen reserveren die groot genoeg is om 80 'char's te plaatsen. Vervolgens wordt er een variabele 'str' gedefinieerd dat een pointer naar een char is. Deze pointer 'wijst' naar het adres van de eerste byte in het gereserveerde stukje geheugen. Verder gebeurt er nog niks.

De code

void writeString(const char *words)
{
...
}

definieert een functie die een pointer naar een char kan ontvangen en daar dan iets mee doet. Je zou ergens anders in je code iets kunnen schrijven als:

writeString(str)

En deze function call zorgt er dan voor dat de variabele 'str' aan de functie 'writeString' wordt doorgegeven waarna de code in die functie wordt uitgevoerd.
Sjaak de Lange
Artikelen: 0
Berichten: 220
Lid geworden op: wo 11 jul 2012, 09:44

Re: C string en array

hoi Arjen, ...ahh niets gaat automatisch in c , dat heb ik gemerkt :D ..
Er stond in mijn boek dat writestring een open source routine was, ik dacht dat dit een apart 'programmaatje' was wat in c werd aangeroepen...maar t is enkel de tekst dus ok..
maar wat ik nog steeds niet helemaal begrijp is hoe de WriteString gekoppeld word aan de char str[80]...als ik nou bijvoorbeeld 2 van deze routines ( 2x char en writestring) heb hoe maak ik dan het onderscheid?
ps de procedure word later in mijn programma inderdaad aangeroepen met :
writeString (" hello World")
Gebruikersavatar
irArjan
Artikelen: 0
Berichten: 388
Lid geworden op: vr 23 okt 2009, 13:04

Re: C string en array

In elk programma mag elke 'naam' maar 1x gedefinieerd zijn. Dus er mag maar 1 implementatie van de routine 'writeString' bestaan. En op ieder moment mag er maar 1x de naam 'str' bestaan. Je kan de variabele naam 'str' wel vaker gebruiken en overschrijven, maar op het moment dat je de routine 'writeString' aanroept zal deze de 'str' gebruiken die op dat moment bekend is. De routine 'writeString' kan niet overschreven worden, deze mag maar 1x gedefinieerd worden.

Wat bedoel je precies met 'koppelen aan'? Dit is niet een heel erg bekende programmeer term ;). Je kan de routine 'writeString' toepassen op de variabele 'str'. Dat doe je door

writeString(str)

aan te roepen, dit is een z.g.n. function call. Als je

writeString("hello World")

aanroept dan doe je een function call met als argument een 'string literal'. Hier is "hello World" de string literal, dit is gewoon een string die bij het compileren gewoon letterlijk zo wordt gebruikt als hij er staat (hence the name...). Dit in tegenstelling tot een variabele.

Maar het maakt voor writeString niet uit wat je doet, of je nu de variabele 'str' mee geeft of een string literal, voor die functie ziet dat er hetzelfde uit.
Sjaak de Lange
Artikelen: 0
Berichten: 220
Lid geworden op: wo 11 jul 2012, 09:44

Re: C string en array

:-) sorry ben nog niet erg bekend met de programmeertermen maar weet nu dat de array str bedoeld is voor de writestring die weer met een pointer werkt. Ik begrijp
niet helemaal waarom ze de array niet gewoon string hebben genoemd dat zou het
geheel iets overzichtelijker maken voor een beginner en dat is waar dit boek voor bedoeld is...maar bedankt!
ps het is overigens een programmaatje voor een microprocessor het is geschreven in c, wat zijn de verschillen met c++?
Gebruikersavatar
irArjan
Artikelen: 0
Berichten: 388
Lid geworden op: vr 23 okt 2009, 13:04

Re: C string en array

c is een z.g.n. procedurele taal (soort van lineair, dus je gaat gewoon van boven naar beneden een rijtje commandos af) bedoelt voor heel low-level (bare metal) programmeren. Als het complexer wordt (bijv. GUIs) heb je meer structuur nodig, c++ is een object georienteerde taal die het in staat stelt veel complexere programmas te maken. Maar de taal zelf is dus ook complexer.

Terug naar “Informatica en programmeren”