quartz/content/notes/10-intro-to-c-arrays-malloc-free.md
2022-08-11 11:29:21 +12:00

1.3 KiB

title aliases tags
10-intro-to-c-arrays-malloc-free
cosc204

Arrays

  • must declare with size
uint32_t array[10];
float matrix[5][6];
double balance[5] = {1000.0, 2.0, 3.4} //last two elementes will be initalised to zero
double balance[] = {1000.0, 2.0, 3.4} //size is calculated automatically
  • do not have methods
    • array.size etc
  • not bounds checked
    • can write past the end
  • to know must keep trach yourself or use sentinel value
    • 'H' 'e' 'l' 'l' 'o' '\0' <- sentinel value
//find the length of an array
size_t strlen(const char *of){
	char *check = of;
	
	while(*check != '\0')
		check++;
	
	return check - of;
}

quoted strings

  • "Hello World"
  • must be const - not allowed to change them
    • const char *hello_world = "hello world"
  • can use then in place of char arrays

Memory

when we decalre an array we are saying "choose somewhere in memory to put this number of that and call it thing"

that thing[this];

uint_t byte_array[1024];
  • compiler chooses somewhere in memory
  • the name of the array maps to the location

segments

  • diagram
  • translation between virtual and physical pages
  • compiler knows
    • where in memory program is stored
    • how much global data you use
    • where the stack is

malloc

  • "memory allocate"