3: C forritun og bendar Flashcards
Gagnatög í C
Heiltölutög
– char,int
Kommutölutög
– float,double
Breytar (modifiers):
– short
– long
Víðværar breytur (global)
– Skilgreindar utan falla, aðeins sýnilegar í föllum í skránni
– Víðværar breytur með extern eru sjáanlegar fyrir utan skránna
– Fastar eru skilgreindir með const
Kyrrlegar breytur (static)
– Skilgreindar með static
– Halda gildi sínu milli keyrsla á falli
Virkjar (operators) í C
Allir þeir sömu og í Java:
– Útreikningsvirkjar
+, −, *, /, %, &, |, ^, «,»_space;
– Samanburðarvirkjar
==, <, <=, >, >=, !=, &&, ||, !
– Gildisveitingarvirkjar
=, ++, −−, +=, −=, *=, /=, %=
– Aðrir virkjar
a?b:c, a,b
a?b:c
Þríundarvirkji, a notað sem sanngildi, ef satt þá b skilað, annars c skilað (if setning í einni aðgerð)
a,b
Framkvæmir a og b í röð, skilar b
Grunneiningin í C
– Keyrsla hefst í main fallinu
– Forritasöfn saman standa af föllum
– Öll vinnsla fer fram í föllum
– Í Java er klasi (class) grunneiningin
Skilar yfirleitt einu gildi en breyttist og núna :
Skilatagið void þýðir að engu er skilað
Bendar (pointers)
Breyta sem geymir vistfang sem gildi
Fáum vistfang breytu með:
&-virkjanum
Fáum gildi tilvísunar (dereferencing) með:
*
Gildið NULL er vistfang á engu minnishólfi
Bendir sem inniheldur NULL bendir ekki á neitt
Fáum keyrsluvillu ef * er beitt á bendi sem inniheldur NULL
Margir bendar geta bent á sama minnishólfið
Kallast samnefni (aliasing) og er algeng uppspretta villa
Í C eru öll viðföng send sem gildi (call by value), hvernig virkar það og afhverju
– Þegar kallað er á fallið er viðfangsgildið afritað yfir ístaðværa breytu í fallinu
– Tryggir það að föll geta ekki breytt viðfangsbreytum í köllunarforrit
Hvað ef við viljum breyta gildi viðfangsins?
Senda tilvísun (bendi) á upphaflegu breytuna og breyta því sem hún bendir á!