We use address and dereference operators to work with memory locations directly. This helps us access or change the value stored in a specific place in the computer's memory.
Address and dereference operators in C++
int* ptr = &variable; // & is address operator int value = *ptr; // * is dereference operator
The & operator gives the memory address of a variable.
The * operator accesses the value stored at the memory address a pointer holds.
p points to x. Using *p gets the value of x.int x = 10; int* p = &x; // p stores address of x int y = *p; // y gets value 10 from address stored in p
ptr lets us change a through the pointer.int a = 5; int* ptr = &a; *ptr = 20; // changes value of a to 20
num and its value using pointer.int num = 7; int* pNum = # std::cout << "Address: " << pNum << " Value: " << *pNum << std::endl;
This program shows how to get the address of a variable, access its value through a pointer, and change the value using the dereference operator.
#include <iostream> int main() { int value = 42; int* pointer = &value; // store address of value std::cout << "Value: " << value << "\n"; std::cout << "Address of value: " << pointer << "\n"; std::cout << "Value via pointer: " << *pointer << "\n"; *pointer = 100; // change value using pointer std::cout << "New value: " << value << "\n"; return 0; }
Memory addresses shown when running may look different each time.
Always initialize pointers before dereferencing to avoid errors.
Using * on a pointer accesses or changes the value at that memory location.
The & operator gets the address of a variable.
The * operator accesses or changes the value at the address a pointer holds.
Pointers let you work directly with memory, which is useful for efficient programming.
Practice
& operator do in C++?Solution
Step 1: Understand the
The&operator&operator is used to get the address of a variable in memory.Step 2: Differentiate from other operators
It does not multiply, declare pointers, or dereference pointers; those are different operations.Final Answer:
It gives the memory address of a variable. -> Option DQuick Check:
&operator = address retrieval [OK]
- Confusing & with multiplication operator
- Thinking & declares a pointer
- Mixing & with dereference * operator
Solution
Step 1: Recall pointer declaration syntax
In C++, a pointer to an int is declared asint *ptr;where*indicates pointer type.Step 2: Check other options for syntax errors
int &ptr;declares a reference, not a pointer.int ptr*;and*int ptr;are invalid syntax.Final Answer:
int *ptr; -> Option AQuick Check:
Pointer declaration =int *ptr;[OK]
- Using & instead of * for pointers
- Placing * after variable name incorrectly
- Confusing pointers with references
int x = 10; int *p = &x; *p = 20; std::cout << x << std::endl;
Solution
Step 1: Understand pointer assignment
Pointerpstores the address ofx. Using*p = 20;changes the value at that address.Step 2: Check the effect on
Sincex*ppoints tox, changing*pto 20 updatesxto 20.Final Answer:
20 -> Option CQuick Check:
Dereferencing pointer changes original variable [OK]
- Thinking *p is the address, not the value
- Expecting output to be original x (10)
- Confusing pointer variable with pointed value
int x = 5; int *p; *p = x; std::cout << *p << std::endl;
Solution
Step 1: Check pointer initialization
Pointerpis declared but not assigned an address before*p = x;.Step 2: Understand dereferencing uninitialized pointer
Dereferencingpwithout initialization causes undefined behavior or crash.Final Answer:
Pointer p is not initialized before dereferencing. -> Option BQuick Check:
Always initialize pointers before dereferencing [OK]
- Dereferencing pointer without assigning address
- Assuming pointer auto-points to variable
- Confusing pointer declaration with initialization
int a = 3, b = 4; int *p = &a; int *q = &b; int *temp = p; p = q; q = temp; std::cout << *p << " " << *q << std::endl;
Solution
Step 1: Understand pointer swapping
Initially,ppoints toa(3),qpoints tob(4). The code swaps the pointers usingtemp.Step 2: Check final pointer values
After swapping,ppoints tob(4), andqpoints toa(3).Final Answer:
4 3 -> Option AQuick Check:
Pointer swap changes what they point to [OK]
- Confusing swapping pointers with swapping values
- Expecting original order after swap
- Mixing pointer values and pointed values
Ready to prove it?
Pass the test and this pattern moves unknown
