Course Content
C Basics
C Basics
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
#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; }
Note
%p
is the format specifier used for addresses (pointer).
Addresses are typically expressed in hexadecimal notation.
Think of the &
operator as identifying your home's address using your name.
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.
Note
Essentially,
*&x
is the same asx
.
Main
#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; }
Note
Don't mix up the dereference operator (
*x
) with the multiplication operator (x*y
).
Task
- Create an integer array of 5 elements and populate it.
- Retrieve the address of the third element.
- Increment the address of the third element (i.e., address + 1).
- Attempt to dereference the address obtained in the previous step.
Thanks for your feedback!
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
#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; }
Note
%p
is the format specifier used for addresses (pointer).
Addresses are typically expressed in hexadecimal notation.
Think of the &
operator as identifying your home's address using your name.
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.
Note
Essentially,
*&x
is the same asx
.
Main
#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; }
Note
Don't mix up the dereference operator (
*x
) with the multiplication operator (x*y
).
Task
- Create an integer array of 5 elements and populate it.
- Retrieve the address of the third element.
- Increment the address of the third element (i.e., address + 1).
- Attempt to dereference the address obtained in the previous step.
Thanks for your feedback!
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
#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; }
Note
%p
is the format specifier used for addresses (pointer).
Addresses are typically expressed in hexadecimal notation.
Think of the &
operator as identifying your home's address using your name.
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.
Note
Essentially,
*&x
is the same asx
.
Main
#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; }
Note
Don't mix up the dereference operator (
*x
) with the multiplication operator (x*y
).
Task
- Create an integer array of 5 elements and populate it.
- Retrieve the address of the third element.
- Increment the address of the third element (i.e., address + 1).
- Attempt to dereference the address obtained in the previous step.
Thanks for your feedback!
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
#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; }
Note
%p
is the format specifier used for addresses (pointer).
Addresses are typically expressed in hexadecimal notation.
Think of the &
operator as identifying your home's address using your name.
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.
Note
Essentially,
*&x
is the same asx
.
Main
#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; }
Note
Don't mix up the dereference operator (
*x
) with the multiplication operator (x*y
).
Task
- Create an integer array of 5 elements and populate it.
- Retrieve the address of the third element.
- Increment the address of the third element (i.e., address + 1).
- Attempt to dereference the address obtained in the previous step.