Pointers let you work directly with memory addresses. But if used wrong, they cause bugs or crashes.
Common pointer errors
int *ptr; // declares a pointer to an int ptr = &var; // ptr now holds the address of var *ptr = 10; // changes the value at the address ptr points to
A pointer stores a memory address, not the actual value.
Using * (dereference) accesses the value at the pointer's address.
int x = 5; int *p = &x; printf("%d\n", *p);
int *p; p = NULL; if (p != NULL) { *p = 10; }
int arr[3] = {1, 2, 3}; int *p = arr; printf("%d\n", *(p + 1));
This program shows two common pointer errors: using an uninitialized pointer and dereferencing a NULL pointer. It avoids crashes by initializing pointers and checking for NULL before use.
#include <stdio.h> int main() { int *ptr; // pointer declared but not initialized int x = 10; // Common error: using uninitialized pointer // *ptr = 5; // This would cause a crash ptr = &x; // pointer now points to x *ptr = 20; // changes x to 20 printf("Value of x: %d\n", x); // Common error: dereferencing NULL pointer ptr = NULL; if (ptr != NULL) { *ptr = 30; // safe because we checked } else { printf("Pointer is NULL, cannot dereference.\n"); } return 0; }
Always initialize pointers before using them.
Never dereference a pointer that is NULL or uninitialized.
Use checks like if (ptr != NULL) to avoid crashes.
Pointers hold memory addresses and must be handled carefully.
Common errors include using uninitialized pointers and dereferencing NULL pointers.
Always initialize pointers and check for NULL before using them.
Practice
Solution
Step 1: Understand pointer initialization
Pointers must be assigned a valid memory address before use to avoid undefined behavior.Step 2: Identify common mistakes
Using a pointer without initialization can cause crashes or unexpected results.Final Answer:
Using uninitialized pointers before assigning them an address -> Option CQuick Check:
Uninitialized pointer use = common error [OK]
- Dereferencing NULL pointers
- Forgetting to initialize pointers
- Confusing pointer and value assignment
Solution
Step 1: Review pointer declaration syntax
In C, the asterisk (*) goes between the type and the pointer name to declare a pointer.Step 2: Check each option
int *ptr; correctly declares a pointer to int. Options A, B, and D have invalid syntax.Final Answer:
int *ptr; -> Option DQuick Check:
Correct pointer syntax = int *ptr; [OK]
- Placing * after variable name
- Using & instead of * for pointers
- Incorrect order of type and *
int x = 10;
int *p = &x;
*p = 20;
printf("%d", x);Solution
Step 1: Understand pointer assignment
Pointer p points to variable x. Changing *p changes x's value.Step 2: Trace the code execution
*p = 20 sets x to 20. printf prints x, so output is 20.Final Answer:
20 -> Option BQuick Check:
Pointer dereference changes value = 20 [OK]
- Confusing pointer address and value
- Expecting original value unchanged
- Ignoring pointer dereference effect
int *p;
*p = 5;
printf("%d", *p);Solution
Step 1: Check pointer initialization
Pointer p is declared but not assigned an address before use.Step 2: Understand dereferencing consequences
Dereferencing uninitialized pointer causes undefined behavior or crash.Final Answer:
Pointer p is not initialized before dereferencing -> Option AQuick Check:
Uninitialized pointer dereference = error [OK]
- Assuming declaration initializes pointer
- Ignoring runtime crashes from bad pointers
- Misreading error as printf issue
int *p = NULL;
// Some code
printf("%d", *p);Solution
Step 1: Understand NULL pointer risks
Dereferencing NULL pointer causes runtime crash or undefined behavior.Step 2: Apply safe pointer usage
Always check if pointer is NULL before dereferencing to avoid errors.Final Answer:
Check if p is NULL before dereferencing -> Option AQuick Check:
NULL check before dereference = safe code [OK]
- Dereferencing NULL pointer causing crash
- Assigning invalid addresses
- Ignoring pointer safety checks
Ready to prove it?
Pass the test and this pattern moves unknown
