3: C forritun og bendar Flashcards

1
Q

Gagnatög í C

A

Heiltölutög
– char,int
Kommutölutög
– float,double
Breytar (modifiers):
– short
– long

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Víðværar breytur (global)

A

– 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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Kyrrlegar breytur (static)

A

– Skilgreindar með static
– Halda gildi sínu milli keyrsla á falli

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Virkjar (operators) í C

A

Allir þeir sömu og í Java:
– Útreikningsvirkjar
+, −, *, /, %, &, |, ^, «,&raquo_space;
– Samanburðarvirkjar
==, <, <=, >, >=, !=, &&, ||, !
– Gildisveitingarvirkjar
=, ++, −−, +=, −=, *=, /=, %=
– Aðrir virkjar
a?b:c, a,b

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

a?b:c

A

Þríundarvirkji, a notað sem sanngildi, ef satt þá b skilað, annars c skilað (if setning í einni aðgerð)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

a,b

A

Framkvæmir a og b í röð, skilar b

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Grunneiningin í C

A

– Keyrsla hefst í main fallinu
– Forritasöfn saman standa af föllum
– Öll vinnsla fer fram í föllum
– Í Java er klasi (class) grunneiningin

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Skilar yfirleitt einu gildi en breyttist og núna :

A

Skilatagið void þýðir að engu er skilað

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Bendar (pointers)

A

Breyta sem geymir vistfang sem gildi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Fáum vistfang breytu með:

A

&-virkjanum

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Fáum gildi tilvísunar (dereferencing) með:

A

*

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Gildið NULL er vistfang á engu minnishólfi

A

Bendir sem inniheldur NULL bendir ekki á neitt
Fáum keyrsluvillu ef * er beitt á bendi sem inniheldur NULL

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Margir bendar geta bent á sama minnishólfið

A

Kallast samnefni (aliasing) og er algeng uppspretta villa

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Í C eru öll viðföng send sem gildi (call by value), hvernig virkar það og afhverju

A

– Þ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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hvað ef við viljum breyta gildi viðfangsins?

A

Senda tilvísun (bendi) á upphaflegu breytuna og breyta því sem hún bendir á!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Hvernig virkar kall með tilvísun (call by reference)

A

Viðfangið er bendir á breytu
Hækkum svo það sem hún bendir á
– Þurfum þá að senda inn vistfang á breytu

17
Q

Notum benda á ýmsa vegu í C:

A

-Senda stóra gagnahluti inn í föll án þess að afrita þá
– Vinna með kviklegt (dynamic) minni
– Í kvikum gagnagrindum
– Bendar geta vísað á föll
Bendar gera forrit mun sveigjanlegri
– Geta lagað sig að aðstæðum á keyrslutíma

18
Q

Hættur í notkun benda:

A

Bendar þurfa að vera gildir (valid)
– Þurfa að benda á löglegt minnishólf sem forritið hefur umráð
yfir

19
Q

Færsla (structure) er ?

A

samsett úr tengdum gagnagildum

20
Q

Vísum í einstök svið (fields) með?

A

.-virkjanum

21
Q

p->eink, sem er jafngilt

A

(*p).eink

22
Q

Tengdir listar samanstanda af ?

A

hnútum (nodes)

23
Q

Hnútur inniheldur?

A

gögn og bendi á næsta hnút

24
Q

Til að geta unnið með hnút þurfum við bendi á hann:

A

Sjálfstæða bendabreytu, eða next-bendinn í öðrum hnúti

25
Q

malloc

A

memory allocation

26
Q

Hvað er GDB?

A

GDB er skipanalínuforrit til að rekja sig í gegnum forrit

27
Q

Hvernig notum við GDB?

A

• Þýðum forritið með -g í gcc
• Keyrum forritið með: gdb ./forrit
• Byrjum á að setja rofstaði (breakpoints) í forritinu (break)
• Keyrum svo forritið (run)

28
Q

C forrit getur náð í viðföngin sem það var keyrt með, hvað eru argc og argv

A

– argc inniheldur fjölda viðfanga
– argv er strengfylki með viðföngunum

29
Q

Stærri C forrit eru oftast brotin upp í margar skrár, afhverju?

A

Hvert fall í sérstakri skrá
Einfaldar þýðingu