Bird
Raised Fist0
C++programming~5 mins

Pointers and arrays in C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a pointer in C++?
A pointer is a variable that stores the memory address of another variable. It 'points' to the location where data is stored.
Click to reveal answer
beginner
How are arrays and pointers related in C++?
The name of an array acts like a pointer to its first element. You can use pointers to access array elements by moving through memory addresses.
Click to reveal answer
intermediate
What does the expression *(arr + i) mean?
It means accessing the element at index i of the array arr by moving i positions from the start address and dereferencing the pointer.
Click to reveal answer
beginner
How do you declare a pointer to an integer in C++?
You declare it like this: int* ptr; where ptr can store the address of an integer variable.
Click to reveal answer
intermediate
What happens if you increment a pointer pointing to an array element?
Incrementing the pointer moves it to the next element in the array, because it increases the address by the size of the element type.
Click to reveal answer
What does the pointer variable store?
ASize of a variable
BValue of another variable
CType of a variable
DMemory address of another variable
If int arr[5];, what does arr represent?
APointer to the last element of arr
BPointer to the first element of arr
CValue of the first element
DSize of the array
What does *(arr + 2) access?
AThird element of arr
BSecond element of arr
CFirst element of arr
DFourth element of arr
How do you declare a pointer to a float variable?
Afloat* ptr;
Bptr* float;
Cfloat ptr*;
Dpointer float ptr;
What happens when you do ptr++ if ptr points to an int array element?
APointer value stays the same
BPointer moves to the next byte
CPointer moves to the next int element
DPointer moves to the previous element
Explain how pointers and arrays are connected in C++.
Think about how the array name can be used like a pointer to the first element.
You got /3 concepts.
    Describe what happens when you increment a pointer that points to an array element.
    Consider how memory addresses change when moving through an array.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the name of an array represent in C++?
      easy
      A. A copy of the entire array
      B. The total size of the array
      C. The last element of the array
      D. A pointer to the first element of the array

      Solution

      1. Step 1: Understand array name behavior

        In C++, the name of an array acts as a pointer to its first element, not the whole array or size.
      2. Step 2: Confirm pointer usage

        This pointer can be used to access elements by pointer arithmetic or indexing.
      3. Final Answer:

        A pointer to the first element of the array -> Option D
      4. Quick Check:

        Array name = pointer to first element [OK]
      Hint: Remember array name points to element zero [OK]
      Common Mistakes:
      • Thinking array name stores size
      • Confusing array name with last element
      • Assuming array name copies data
      2. Which of the following is the correct way to declare a pointer to an integer array named arr?
      easy
      A. int *ptr = &arr;
      B. int ptr = &arr;
      C. int *ptr = arr;
      D. int ptr = arr;

      Solution

      1. Step 1: Understand pointer declaration

        To declare a pointer to an integer, use int *ptr. The array name arr acts as a pointer to its first element.
      2. Step 2: Assign pointer correctly

        Assigning ptr = arr; sets the pointer to the first element's address. Using &arr gives the address of the whole array, which has a different type.
      3. Final Answer:

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

        Pointer to first element = int *ptr = arr [OK]
      Hint: Use int *ptr = arr; to point to array start [OK]
      Common Mistakes:
      • Using &arr instead of arr for pointer
      • Declaring pointer as int instead of int*
      • Assigning pointer without *
      3. What is the output of the following code?
      int arr[] = {10, 20, 30};
      int *p = arr;
      std::cout << *(p + 1) << std::endl;
      medium
      A. 20
      B. 10
      C. 30
      D. Compilation error

      Solution

      1. Step 1: Understand pointer arithmetic

        Pointer p points to arr[0]. Adding 1 moves pointer to arr[1].
      2. Step 2: Dereference pointer at new position

        Dereferencing *(p + 1) gives the value at arr[1], which is 20.
      3. Final Answer:

        20 -> Option A
      4. Quick Check:

        *(p + 1) = arr[1] = 20 [OK]
      Hint: Pointer + 1 points to next array element [OK]
      Common Mistakes:
      • Confusing pointer arithmetic with addition of values
      • Dereferencing pointer without offset
      • Expecting compilation error
      4. Identify the error in the following code snippet:
      int arr[3] = {1, 2, 3};
      int *p = &arr;
      std::cout << *(p + 2) << std::endl;
      medium
      A. Pointer declaration is correct, no error
      B. Incorrect pointer assignment: &arr should be arr
      C. Dereferencing pointer is invalid syntax
      D. Array size is too small for pointer arithmetic

      Solution

      1. Step 1: Analyze pointer assignment

        arr is an array name acting as pointer to first element. &arr is address of whole array, type int (*)[3], incompatible with int *.
      2. Step 2: Correct pointer assignment

        Assigning int *p = arr; is correct to point to first element. Using &arr causes type mismatch and incorrect pointer arithmetic.
      3. Final Answer:

        Incorrect pointer assignment: &arr should be arr -> Option B
      4. Quick Check:

        Use arr, not &arr, for int* pointer [OK]
      Hint: Use arr, not &arr, when assigning int* pointer [OK]
      Common Mistakes:
      • Using &arr instead of arr for int*
      • Ignoring pointer type mismatch warnings
      • Assuming &arr points to first element
      5. Given the code below, what will be the output?
      int arr[] = {5, 10, 15, 20};
      int *p = arr + 1;
      std::cout << p[2] << std::endl;
      hard
      A. 20
      B. 15
      C. Undefined behavior
      D. 10

      Solution

      1. Step 1: Understand pointer initialization

        p = arr + 1; points to arr[1], which is 10.
      2. Step 2: Access element using pointer indexing

        p[2] means *(p + 2), which points to arr[3] (1 + 2 = 3), value 20.
      3. Final Answer:

        20 -> Option A
      4. Quick Check:

        p[2] = arr[3] = 20 [OK]
      Hint: Pointer[index] = *(pointer + index) [OK]
      Common Mistakes:
      • Confusing p[2] with arr[2]
      • Forgetting pointer offset starts at arr + 1
      • Assuming p[2] is out of bounds
      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