Bird
Raised Fist0
Cprogramming~10 mins

Pointer declaration - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Pointer declaration
Start
↓
Declare variable
↓
Declare pointer with *
↓
Pointer stores address of variable
↓
Use pointer to access variable
↓
End
This flow shows how a pointer is declared to store the address of a variable and then used to access that variable.
Execution Sample
C
int x = 10;
int *p = &x;
printf("Value via pointer: %d", *p);
Declare an integer x, declare a pointer p to int, assign p the address of x, then print the value pointed by p.
Execution Table
StepActionVariablePointerValue AccessedOutput
1Declare int x = 10x=10p=uninitialized--
2Declare pointer p to intx=10p=uninitialized--
3Assign p = &x (address of x)x=10p=&x--
4Access value via *px=10p=&x10Value via pointer: 10
💡 Program ends after printing value accessed through pointer *p.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4
xundefined10101010
pundefinedundefinedundefined&x&x
Key Moments - 3 Insights
Why do we use * in the pointer declaration?
The * tells the compiler that p is a pointer to an int, not an int itself. See execution_table step 2 where p is declared as a pointer.
What does &x mean in the assignment to p?
&x means the address of variable x. In step 3, p stores this address, so p points to x.
How does *p give the value of x?
*p means 'the value at the address stored in p'. Since p points to x, *p accesses x's value, shown in step 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3, what does p hold?
AThe value 10
BThe address of x
CUndefined
DThe value of *p
💡 Hint
Check the 'Pointer' column at step 3 in the execution_table.
At which step is the value 10 accessed through the pointer?
AStep 4
BStep 1
CStep 3
DStep 2
💡 Hint
Look at the 'Value Accessed' and 'Output' columns in the execution_table.
If we change int *p = &x; to int *p = NULL;, what would *p access?
AValue 10
BAddress of x
CUndefined or error
DValue 0
💡 Hint
Refer to pointer initialization and what happens if pointer does not point to a valid address.
Concept Snapshot
Pointer declaration in C:
int *p; declares p as a pointer to int.
Use & to get variable address: p = &x;
Use *p to access value at that address.
Pointers store addresses, not values.
Dereferencing *p accesses the variable pointed to.
Full Transcript
This example shows how to declare a pointer in C. First, an integer variable x is declared and set to 10. Then, a pointer p is declared with int *p, meaning p will hold the address of an int. Next, p is assigned the address of x using &x. Finally, the value of x is accessed by dereferencing p with *p, which prints 10. The execution table traces each step, showing variable and pointer states. Key points include understanding that * in declaration means pointer type, & gets address, and *p accesses the value at that address.

Practice

(1/5)
1. What does the following declaration mean in C?
int *ptr;
easy
A. ptr is a pointer to a character variable
B. ptr is a pointer to an integer variable
C. ptr is an integer variable
D. ptr is a function returning an integer

Solution

  1. Step 1: Understand the * symbol in declaration

    The * before ptr means ptr is a pointer variable, not a normal integer.
  2. Step 2: Check the type before *

    The type before * is int, so ptr points to an integer variable.
  3. Final Answer:

    ptr is a pointer to an integer variable -> Option B
  4. Quick Check:

    int *ptr means pointer to int [OK]
Hint: Look for * before variable name to identify pointer [OK]
Common Mistakes:
  • Thinking * means multiplication here
  • Confusing pointer with normal variable
  • Ignoring the type before *
2. Which of the following is the correct way to declare a pointer to a float variable in C?
easy
A. ptr float*;
B. float ptr*;
C. *float ptr;
D. float *ptr;

Solution

  1. Step 1: Recall pointer declaration syntax

    Pointer declaration syntax is: type *name; so the * goes between type and variable name.
  2. Step 2: Check each option

    float *ptr; matches correct syntax: float *ptr; others have wrong order or missing parts.
  3. Final Answer:

    float *ptr; -> Option D
  4. Quick Check:

    Pointer syntax = type *name; [OK]
Hint: Always put * between type and variable name [OK]
Common Mistakes:
  • Placing * after variable name
  • Putting * before type
  • Missing * entirely
3. What is the output of this C code?
int x = 10;
int *p = &x;
printf("%d", *p);
medium
A. 10
B. Compilation error
C. Garbage value
D. Address of x

Solution

  1. Step 1: Understand pointer initialization

    p is assigned the address of x using &x, so p points to x.
  2. Step 2: Dereference pointer to get value

    *p means value at address p, which is x's value 10.
  3. Final Answer:

    10 -> Option A
  4. Quick Check:

    *p gives value at pointer address [OK]
Hint: Use * to get value from pointer address [OK]
Common Mistakes:
  • Printing pointer p instead of *p
  • Confusing address and value
  • Forgetting & to get address
4. Identify the error in this pointer declaration:
int *p;
p = 5;
medium
A. Error: assigning integer directly to pointer
B. Correct: p points to integer 5
C. Error: missing * in assignment
D. Error: pointer must be initialized with & operator

Solution

  1. Step 1: Check pointer assignment rules

    A pointer must hold a memory address, not a direct integer value.
  2. Step 2: Analyze given assignment

    Assigning 5 directly to pointer p is invalid; it should be an address like &variable.
  3. Final Answer:

    Error: assigning integer directly to pointer -> Option A
  4. Quick Check:

    Pointer = address, not direct value [OK]
Hint: Pointers store addresses, never assign raw values directly [OK]
Common Mistakes:
  • Assigning integer instead of address
  • Forgetting & operator for address
  • Confusing pointer and normal variable
5. Given the code below, which pointer declaration correctly allows modifying the value of num through the pointer?
int num = 20;
// Which declaration is correct?
hard
A. int *ptr = num;
B. int ptr = #
C. int *ptr = #
D. int &ptr = num;

Solution

  1. Step 1: Understand pointer declaration for modifying variable

    To modify num via pointer, pointer must hold address of num, declared as int *ptr.
  2. Step 2: Check each option

    int *ptr = # correctly declares pointer to int and assigns address of num. Others are invalid syntax or wrong types.
  3. Final Answer:

    int *ptr = # -> Option C
  4. Quick Check:

    Pointer to int = &variable for modification [OK]
Hint: Use int *ptr = &var to modify var via pointer [OK]
Common Mistakes:
  • Assigning value instead of address
  • Using wrong type for pointer
  • Confusing references with pointers
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard