References and Dereferences
Pointers are built around two operators:
- The address-of operator
&. - The dereference operator
*.
Address-of Operator
The address-of operator, represented by &, allows us to directly interact with our computer's RAM. Using & lets you obtain the actual memory address of an object.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
The format specifier used to print addresses (pointers) is %p.
Addresses are typically expressed in hexadecimal notation.
Dereference Operator
Conversely, the * operator gives you the resident's name when given their address. So, how can we employ this operator if we're not directly dealing with addresses? If you have an expression like &x, which returns the address of the x variable, applying the * operator to it (*&x) gives you the value of the variable stored at that address.
Essentially, *&x is the same as x.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Don't mix up the dereference operator (*x) with the multiplication operator (x*y).
Swipe to start coding
- Create an integer array of 5 elements and populate it.
- Retrieve the address of the third element.
- Increment the address of the third element and dereference the address obtained.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Can you explain the difference between the address-of and dereference operators with an example?
What does hexadecimal notation look like in memory addresses?
Can you show how to use these operators in a simple code snippet?
Awesome!
Completion rate improved to 2.63
References and Dereferences
Veeg om het menu te tonen
Pointers are built around two operators:
- The address-of operator
&. - The dereference operator
*.
Address-of Operator
The address-of operator, represented by &, allows us to directly interact with our computer's RAM. Using & lets you obtain the actual memory address of an object.
Main.c
123456789101112#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable into RAM: %p\n", &x); // using reference operator `&` for getting address return 0; }
The format specifier used to print addresses (pointers) is %p.
Addresses are typically expressed in hexadecimal notation.
Dereference Operator
Conversely, the * operator gives you the resident's name when given their address. So, how can we employ this operator if we're not directly dealing with addresses? If you have an expression like &x, which returns the address of the x variable, applying the * operator to it (*&x) gives you the value of the variable stored at that address.
Essentially, *&x is the same as x.
Main.c
1234567891011121314#include <stdio.h> int main() { int x = 100; printf("Value of variable: %d\n", x); printf("Address of variable in RAM: %p\n", &x); // using reference operator `&` printf("Dereferencing address of variable: %d", *(&x)); // using dereference operator `*` return 0; }
Don't mix up the dereference operator (*x) with the multiplication operator (x*y).
Swipe to start coding
- Create an integer array of 5 elements and populate it.
- Retrieve the address of the third element.
- Increment the address of the third element and dereference the address obtained.
Oplossing
Bedankt voor je feedback!
single