4: Fylki og minni í C Flashcards

1
Q

Fylki í C

A

Fylki er fastur fjöldi staka af sama tagi

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

Strengir í C

A

Strengir eru fylki af char stökum
Verða að enda á sérstöku núlltákni, ‘\0’

Bókstafir hafa einfaldar gæsalappir (‘a’, ‘$’, ‘\n’, …), en strengir hafa tvöfaldar gæsalappir (“halló”, “hér”, …)

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

Skilgreining strengja:

A

char litur[] = “blár”;
char *litp = “gulur”;

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

Strengjavinnsluföll

A

Mikið af föllum til að vinna með strengi í string.h:

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

Eru upplýsingar um lengdir á streng í C?

A

Nei, ekki hægt að vita

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

char *strcpy(char *dest, char *src)

A

Afritar src streng yfir í dest, ásamt núll-bæti

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

char *strncpy(char *dest, char *src, size_t n)

A

Afritar mest n stafi yfir í dest

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

char *strcat(char *dest, char *src)

A

Setur afrit af src aftan við dest, skilar dest

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

char *strncat(char *dest, char *src, size_t n)

A

Setur afrit af src aftan við dest, notar mest n tákn

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

size_t strlen(const char *str)

A

Skilar lengd strengs (telur ekki núll-bætið)

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

Minnisnotkun í C

A

skipanalínuviðföng
hlaði (stack)
kös (heap)
óupphafsstillt gögn (BSS)
upphafsstillt gögn
forritskóði (text)

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

Hvernig úthlutum við minni úr kös?

A

Úthlutum minni úr kös með malloc (eða calloc) og skilum því til baka með free

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

void* malloc(size_t size)

A

Tekur frá óupphafsstillt minni af stærð size bæti

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

void* calloc(size_t num, size_t size)

A

Tekur frá núllstillt fylki með num stökum, hvert þeirra size bæti

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

void free(void* ptr)

A

Skilar aftur minni sem úthlutað var með malloc eða calloc

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

Ýmsar reglur um minnisúthlutun

A

Skila alltaf öllu minni (með free) sem fengið er með malloc
Ef öllu minninu er ekki skilað þá verður minnisleki
Aldrei nota bendi eftir að honum hefur verið skilað
Nota aðeins malloc þegar það er nauðsynlegt

17
Q

Aldrei nota bendi eftir að honum hefur verið skilað, afhverju?

A

Ekki lengur gildur og getur valdið mjög erfiðum minnisvillum

18
Q

Nota aðeins malloc þegar það er nauðsynlegt, hvenær?

A

Fyrir gagnagrindur af breytilegri stærð sem lifa lengi

19
Q

Hvað er Fjölvar (macros)?

A

Leið til að skipta út nafni fyrir skilgreiningu
Virkar svipað og “finna og skipta út” (find-replace)

20
Q

Notkun fjölva:

A

Skilgreining fasta (t.d. INT_MAX)
Skilgreining einfaldra aðgerða (t.d. MAX(a, b))
Dæmi:
#define INT_MAX 0x7FFFFFFF
#define MAX(a, b) ((a) > (b) ? (a) : (b)) #define WORD_SIZE 4

21
Q

Notum mest forritasafnið stdio.h

A

Það hefur föll til að vinna með staðalinntak, staðalúttak og
skrár

22
Q

Staðalúttak:

A

int printf(char *format, arg1, arg2, …)
Prentar viðföngin arg1, arg2 , á staðalúttak samkvæmt sniðinu format

23
Q

Staðalinntak:

A

int scanf(char *format, arg1, arg2, …)
Les inn í breyturnar arg1, arg2 (sem verða að vera bendar!)

24
Q

Skráarvinnsla í C hefur eftirfarandi skref:

A

– Opna skrá (fopen)
– Lesa úr skrá (fscanf), skrifa í skrá (fprintf) – Loka skrá (fclose)

25
Q

C lítur á skrár sem ?

A

Runu bæta

26
Q

Hversu lengi er skrá opin í C?

A

Eftir að skrá hefur verið opnuð þá er hún opin þar til henni er lokað eða forritið hættir keyrslu

27
Q

FILE *fopen(char *fname, char *mode)

A

Opnar skránna með nafnið fname samvkæmt mode (lesa, skrifa…) og skilar skrárhaldi

28
Q

int fscanf(FILE *fptr, char *format, …)

A

Les gögn úr skránni fptr samkvæmt sniðinu format

29
Q

int fprintf(FILE *fptr, char *format, …)

A

Skrifar í skránna fptr samkvæmt sniðinu format

30
Q

int fclose(FILE *fptr)

A

Lokar skráarhaldinu fptr

31
Q

Að opna skrá:

A

Opnum skrá með fopen
Gefum upp hvernig við ætlum að nota hana
• “r” þýðir lestur, “w” þýðir skrift, “a” þýðir að skrifa aftast

32
Q

Nokkur föll til að lesa úr skrá :

A

– fscanf − les gögn í breytur samkvæmt sniðmáti – fgetc − lesa einn staf úr skrá
– fgets − lesa streng úr skrá

33
Q

Nokkur föll til að skrifa í skrá:

A

– fprintf − skrifa gögn í skrá samkvæmt sniðmáti
– fputc − skrifa einn staf í skrá
– fputs − skrifa streng í skrá

34
Q

Hvað gerir forritið make?

A

Hjálpar til við að smíða keyrsluskrár á sjálfvirkan hátt

35
Q

Búum til verkefnaskrá (makefile) fyrir hvert
forritunarverkefni, reglur :

A

Verkefnaskrá inniheldur reglur:

mark (target): forsendur (dependencies) aðgerðir (commands)