2.1 KiB
| title | aliases | tags | sr-due | sr-interval | sr-ease | ||
|---|---|---|---|---|---|---|---|
| 12-pointers-to-routines |
|
2022-12-08 | 47 | 230 |
compiler ⇒ converts high level language description of program into assembly description of the program assembler ⇒ converts assebly language description into machine code description loader ⇒ loads program into memory, loaded at $4000
data has an address in memory, so does the application. Therefore functions must also have an address in memory which we can access
pointers to routines
int (*method)(int param)
to assign a pointer to a routine
method = square;
to call the routine
result = method(6);
basic example
pointer as member of a struct;
pointers to routines can beused anyqhere variables can
modules
we can break programs into functional modules
- each modules excapsulates one behaviour
- give us a way of data hiding
add pointer to structs as parameters to methods in modules
- call this an abstract data type ADT
- we communicatre with an ADT via its public interface
- so that the implementation details are hidden
method in this struct are "black box"
we gain
- abstraction
- our queue has a print method, so could out stack, tree, and so on
- we call ob->print() without needing to know (exactly) which print method is called
constructor
creates object, initialises it and sets up function pointers

destructor
good to use. help with closing things and freeing memory
modules overview
c programs consist of .c and .h files
- put ADT declarations in the .h (header) files
- we can
#includethese files if we want to use the ADT in a program
- we can
- put routine implementations in .c files




