4: Fylki og minni í C Flashcards
Fylki í C
Fylki er fastur fjöldi staka af sama tagi
Strengir í C
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”, …)
Skilgreining strengja:
char litur[] = “blár”;
char *litp = “gulur”;
Strengjavinnsluföll
Mikið af föllum til að vinna með strengi í string.h:
Eru upplýsingar um lengdir á streng í C?
Nei, ekki hægt að vita
char *strcpy(char *dest, char *src)
Afritar src streng yfir í dest, ásamt núll-bæti
char *strncpy(char *dest, char *src, size_t n)
Afritar mest n stafi yfir í dest
char *strcat(char *dest, char *src)
Setur afrit af src aftan við dest, skilar dest
char *strncat(char *dest, char *src, size_t n)
Setur afrit af src aftan við dest, notar mest n tákn
size_t strlen(const char *str)
Skilar lengd strengs (telur ekki núll-bætið)
Minnisnotkun í C
skipanalínuviðföng
hlaði (stack)
kös (heap)
óupphafsstillt gögn (BSS)
upphafsstillt gögn
forritskóði (text)
Hvernig úthlutum við minni úr kös?
Úthlutum minni úr kös með malloc (eða calloc) og skilum því til baka með free
void* malloc(size_t size)
Tekur frá óupphafsstillt minni af stærð size bæti
void* calloc(size_t num, size_t size)
Tekur frá núllstillt fylki með num stökum, hvert þeirra size bæti
void free(void* ptr)
Skilar aftur minni sem úthlutað var með malloc eða calloc