Referance och dereferance
Två av termerna som kommer i användningen av pointers är “reference” och “dereference”. Reference betyder att du håller ett värde och tar en pointer till det värdet. Dereference är motsatsen, att du har en pointer och får ett värde.
Syntax
Det finns två sätt att se pointer syntax, “types” och “values”. I types beskriver syntaxen “när operationen har skett, får vi underliggande typen …”. I _values _så beskriver syntaxen det faktiska operationen som sker. Det kan göra det svårt att tolka pointer-syntax.
Gällande värden:
*betyder “ dereference ”&betyder “ reference ”
value = *pointer; // Dereferencar pointer
pointer = &value; // Referencar value
Gällande typer där T är en type i C++:
*betyder “underliggande värdet till pointern har typen T när den är dereferenced ”
int* pointer = &12; // Håller en pointer till ett värde av typen `int`
Det finns ytterligare syntax som används i andra områden som [[funktioner|Functions]] och [[klasser|Classes]]. Det är inte nödvändigt för att förstå __pointers __utan endast bygger på existerande funktionalitet.
Example
Pointers kommer oftast att vara annorlunda varje gång som programmet exekveras. Vi behöver inte veta varför detta sker just nu det är för säkerhet.
int main() {
int variable = 12;
int* pointer_to_my_variable = &variable;
std::cout << pointer_to_my_variable << std::endl;
// output (något i stil med):
// 0x7fffc9d3f9a4
int dereferenced_pointer_to_my_variable = *pointer_to_my_variable;
std::cout << dereferenced_pointer_to_my_variable << std::endl;
// output:
// 12
}