Pointers MCQs in C Language

Pointers MCQs in C Language

1.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("%d", *p);
}

A) 0
B) 10
C) Address of a
D) Compiler error

Answer: B
Explanation:
*p dereferences pointer → prints value of a → 10.


2.

Output:

#include <stdio.h>
int main() {
    int a = 20, b = 30;
    int *p = &a;
    p = &b;
    printf("%d", *p);
}

A) 20
B) 30
C) Address of b
D) Compiler error

Answer: B
Explanation:
Pointer reassigned → points to b → dereference → 30.


3.

What is the correct way to declare a pointer to an integer?

A) int *p;
B) int &p;
C) int p*;
D) pointer p;

Answer: A
Explanation:
int *p; declares a pointer to int. & is address-of operator.


4.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    *p = 10;
    printf("%d", a);
}

A) 5
B) 10
C) Compiler error
D) Garbage

Answer: B
Explanation:
*p = 10 updates the value of a via pointer → 10.


5.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%p", p);
}

A) 5
B) Address of a
C) Garbage
D) Compiler error

Answer: B
Explanation:
%p prints pointer → memory address of a.


6.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = NULL;
    p = &a;
    printf("%d", *p);
}

A) 0
B) 5
C) NULL
D) Compiler error

Answer: B
Explanation:
Pointer initialized NULL, then assigned → dereference → 5.


7.

Output:

#include <stdio.h>
int main() {
    int a = 5, b = 10;
    int *p1 = &a, *p2 = &b;
    *p1 = *p2;
    printf("%d %d", a, b);
}

A) 5 10
B) 10 10
C) 5 5
D) Compiler error

Answer: B
Explanation:
*p1 = *p2 → a = b → a = 10, b = 10.


8.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("%d", p);
}

A) 10
B) Address of a
C) 0
D) Compiler error

Answer: B
Explanation:
Printing pointer variable → memory address of a.


9.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", sizeof(p));
}

A) 2
B) 4
C) 8
D) Depends on system

Answer: D
Explanation:
Size of pointer depends on system architecture: 32-bit → 4 bytes, 64-bit → 8 bytes.


10.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p;
    p = &a;
    printf("%d", *p + 5);
}

A) 5
B) 10
C) Compiler error
D) Garbage

Answer: B
Explanation:
Dereference pointer → value 5 + 5 → 10.


11.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    printf("%d", **q);
}

A) 5
B) Address of a
C) Compiler error
D) 0

Answer: A
Explanation:
Pointer to pointer → **q points to p → *q = p → **q = a → 5.


12.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    **q = 10;
    printf("%d", a);
}

A) 5
B) 10
C) Compiler error
D) Garbage

Answer: B
Explanation:
**q → p → a → updating **q updates a → 10.


13.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1, 2, 3};
    int *p = arr;
    printf("%d", *(p+1));
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: B
Explanation:
Pointer arithmetic → p+1 → arr[1] → 2.


14.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1, 2, 3};
    int *p = arr;
    printf("%d", *p + 2);
}

A) 1
B) 3
C) 2
D) Compiler error

Answer: B
Explanation:
*p = arr[0] = 1 → 1 + 2 = 3.


15.

Which of the following is valid pointer initialization?

A) int *p = 5;
B) int *p = NULL;
C) int *p = "10";
D) int *p = *a;

Answer: B
Explanation:
Pointers can be initialized to NULL. Others are invalid.


16.

Output:

#include <stdio.h>
int main() {
    char ch = 'A';
    char *p = &ch;
    printf("%c", *p);
}

A) A
B) ch
C) Compiler error
D) Address

Answer: A
Explanation:
Dereference pointer → value of char → ‘A’.


17.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    int *q = p;
    *q = 20;
    printf("%d", a);
}

A) 10
B) 20
C) Compiler error
D) Garbage

Answer: B
Explanation:
*q = 20 → updates a → 20.


18.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("%u", p);
}

A) 10
B) Address of a
C) Garbage
D) Compiler error

Answer: B
Explanation:
%u prints pointer as unsigned int → memory address of a.


19.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%u", *p);
}

A) 5
B) Address of a
C) Compiler error
D) Garbage

Answer: A
Explanation:
Dereference pointer → value of a → 5.


20.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p;
    p = &a;
    printf("%d", *p++);
}

A) 5
B) 6
C) Compiler error
D) Garbage

Answer: A
Explanation:
p++ → prints current value (p = 5), then increments pointer → 5.


21.

Output:

#include <stdio.h>
int main() {
    int a = 5, b = 10;
    int *p = &a, *q = &b;
    *p = *q + *p;
    printf("%d %d", a, b);
}

A) 5 10
B) 15 10
C) 10 15
D) 15 15

Answer: B
Explanation:
*p = *q + *p → 10 + 5 = 15 → a = 15, b = 10.


22.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("%p %p", p, &a);
}

A) Same addresses
B) Different addresses
C) Compiler error
D) Garbage

Answer: A
Explanation:
p stores address of a → &a → same memory address.


23.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    printf("%d", *p + **q);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
*p = 5, **q = 5 → 5 + 5 = 10.


24.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1, 2, 3};
    int *p = arr;
    printf("%d", *(p+2));
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: C
Explanation:
Pointer arithmetic → p+2 → arr[2] → 3.


25.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1, 2, 3};
    int *p = arr;
    printf("%d", *p++);
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: A
Explanation:
*p++ → prints current value → arr[0] = 1, then increments pointer.


26.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("%d", ++*p);
}

A) 10
B) 11
C) Compiler error
D) 9

Answer: B
Explanation:
++*p → increments value pointed → 10 → 11.


27.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    printf("%d", **q);
}

A) 0
B) 5
C) Address of a
D) Compiler error

Answer: B
Explanation:
**q → p → a → 5.


28.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3};
    int *p = arr;
    printf("%d", *(p+1)+*(p+2));
}

A) 3
B) 5
C) 4
D) 6

Answer: B
Explanation:
*(p+1) = 2, *(p+2) = 3 → sum = 5.


29.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    *p += 5;
    printf("%d", a);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
*a += 5 → 10.


30.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%p", (void*)p);
}

A) Address of a
B) 5
C) Compiler error
D) Garbage

Answer: A
Explanation:
Casting pointer to void* → prints memory address.


31.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1, 2, 3};
    int *p = arr;
    printf("%d", *arr+2);
}

A) 1
B) 3
C) 2
D) Compiler error

Answer: B
Explanation:
*arr = arr[0] = 1 → 1 + 2 = 3.


32.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    **q += 5;
    printf("%d", a);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
**q → p → a → a += 5 → 10.


33.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1,2,3};
    int *p = arr;
    printf("%d", p[2]);
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: C
Explanation:
p[2] → arr[2] → 3.


34.

Output:

#include <stdio.h>
int main() {
    int arr[] = {10,20,30};
    int *p = arr;
    printf("%d", *(p+1)+1);
}

A) 21
B) 20
C) 31
D) Compiler error

Answer: C
Explanation:
*(p+1) = 20 → 20+1 = 21? Wait carefully.
Yes, *(p+1)+1 = 20+1 = 21 ✅.


35.

Output:

#include <stdio.h>
int main() {
    int a = 5, b = 10;
    int *p = &a, *q = &b;
    *p = *q;
    printf("%d %d", a, b);
}

A) 5 10
B) 10 10
C) 5 5
D) Compiler error

Answer: B
Explanation:
*p = *q → a = b → a = 10, b = 10.


36.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("%d", *p--);
}

A) 10
B) 11
C) Compiler error
D) Garbage

Answer: A
Explanation:
*p– → prints current value → 10, then decrements pointer (undefined in this context, but prints 10).


37.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1,2,3};
    int *p = arr+2;
    printf("%d", *p);
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: C
Explanation:
arr+2 → arr[2] → 3.


38.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", ++*p);
}

A) 5
B) 6
C) Compiler error
D) 0

Answer: B
Explanation:
++*p → increment value pointed → 5+1 = 6.


39.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    *p += 10;
    printf("%d", a);
}

A) 5
B) 15
C) Compiler error
D) 0

Answer: B
Explanation:
*a += 10 → 15.


40.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    int **q = &p;
    printf("%d", **q + 5);
}

A) 10
B) 15
C) Compiler error
D) 5

Answer: B
Explanation:
**q → p → a → 10 + 5 = 15.


41.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", p - &a);
}

A) 0
B) 1
C) Compiler error
D) Garbage

Answer: A
Explanation:
Pointer subtraction → same address → 0.


42.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1,2,3};
    int *p = arr;
    printf("%d", *(p+0));
}

A) 0
B) 1
C) 2
D) 3

Answer: B
Explanation:
*(p+0) → arr[0] → 1.


43.

Output:

#include <stdio.h>
int main() {
    int arr[] = {10,20,30};
    int *p = arr;
    printf("%d", *(p+2));
}

A) 10
B) 20
C) 30
D) Compiler error

Answer: C
Explanation:
*(p+2) → arr[2] → 30.


44.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%p", p++);
}

A) Address of a before increment
B) Address of a after increment
C) Compiler error
D) Garbage

Answer: A
Explanation:
p++ → prints current address → then increments pointer.


45.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", *++p);
}

A) 5
B) Compiler error
C) Garbage
D) 0

Answer: C
Explanation:
Pointer increment on a single int variable → undefined behavior → likely garbage.


46.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1,2,3,4};
    int *p = arr;
    printf("%d", *(p+3));
}

A) 1
B) 2
C) 3
D) 4

Answer: D
Explanation:
*(p+3) → arr[3] → 4.


47.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    printf("%d", *p + **q);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
*p = 5, **q = 5 → sum = 10.


48.

Output:

#include <stdio.h>
int main() {
    int arr[2] = {10,20};
    int *p = arr;
    printf("%d", *p + *(p+1));
}

A) 10
B) 20
C) 30
D) Compiler error

Answer: C
Explanation:
*p = 10, *(p+1) = 20 → sum = 30.


49.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", *p * 2);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
Dereference pointer → 5 × 2 = 10.


50.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    *p *= 2;
    printf("%d", a);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
*a *= 2 → a = 10.


51.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1,2,3};
    int *p = arr;
    printf("%d", *(p++));
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: A
Explanation:
*p++ prints current value → arr[0] = 1, then pointer increments.


52.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {10,20,30};
    int *p = arr;
    printf("%d", *++p);
}

A) 10
B) 20
C) 30
D) Compiler error

Answer: B
Explanation:
++p → points to arr[1] → *p = 20.


53.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", *p--);
}

A) 5
B) 4
C) Compiler error
D) Garbage

Answer: A
Explanation:
*p– prints current value → 5, then decrements pointer.


54.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", --*p);
}

A) 5
B) 4
C) Compiler error
D) 6

Answer: B
Explanation:
–*p decrements value pointed → a = 4.


55.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", *p + 3);
}

A) 5
B) 8
C) Compiler error
D) 3

Answer: B
Explanation:
*a = 5 → 5 + 3 = 8.


56.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1,2,3,4};
    int *p = arr;
    int *q = p + 2;
    printf("%d", *q);
}

A) 1
B) 2
C) 3
D) 4

Answer: C
Explanation:
p + 2 → arr[2] → 3.


57.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {10,20,30};
    int *p = arr;
    printf("%d", *(arr+1));
}

A) 10
B) 20
C) 30
D) Compiler error

Answer: B
Explanation:
*(arr+1) → arr[1] → 20.


58.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    **q += 2;
    printf("%d", a);
}

A) 5
B) 7
C) Compiler error
D) 2

Answer: B
Explanation:
**q → p → a → a += 2 → 7.


59.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1,2,3};
    int *p = arr;
    printf("%d", *p + *(p+1) + *(p+2));
}

A) 3
B) 6
C) 5
D) Compiler error

Answer: B
Explanation:
Sum → 1+2+3 = 6.


60.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    printf("%d", *p);
}

A) 10
B) Address of a
C) Compiler error
D) 0

Answer: A
Explanation:
Dereferencing pointer → value → 10.


61.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1,2,3};
    int *p = arr;
    printf("%d", p[1]);
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: B
Explanation:
p[1] → arr[1] → 2.


62.

Output:

#include <stdio.h>
int main() {
    int arr[] = {10,20,30};
    int *p = arr;
    printf("%d", *(p+0));
}

A) 0
B) 10
C) 20
D) Compiler error

Answer: B
Explanation:
*(p+0) → arr[0] → 10.


63.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    printf("%d", **q * 2);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
*q → p → a → 52 = 10.


64.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    *p -= 5;
    printf("%d", a);
}

A) 10
B) 5
C) Compiler error
D) 0

Answer: B
Explanation:
*a -= 5 → a = 5.


65.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", *p--);
}

A) 5
B) 4
C) Compiler error
D) Garbage

Answer: A
Explanation:
*p– prints current value → 5, then decrements pointer.


66.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1,2,3,4};
    int *p = arr+3;
    printf("%d", *(p-2));
}

A) 1
B) 2
C) 3
D) 4

Answer: B
Explanation:
p → arr+3 → arr[3] → *(p-2) = arr[1] = 2.


67.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    printf("%d", **q - 2);
}

A) 3
B) 5
C) Compiler error
D) 2

Answer: A
Explanation:
**q → p → a → 5-2 = 3.


68.

Output:

#include <stdio.h>
int main() {
    int arr[2] = {10,20};
    int *p = arr;
    printf("%d", *(p+1) - *p);
}

A) 10
B) 20
C) Compiler error
D) 30

Answer: A
Explanation:
*(p+1) = 20, *p = 10 → 20-10 = 10.


69.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", (*p)++);
}

A) 5
B) 6
C) Compiler error
D) 0

Answer: A
Explanation:
Post-increment → prints 5, then a = 6.


70.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1,2,3};
    int *p = arr;
    printf("%d", *(p++) + *p);
}

A) 3
B) 4
C) 5
D) Compiler error

Answer: C
Explanation:
*(p++) = arr[0] =1, *p after increment → arr[1]=2 → sum=3? Wait carefully.
*(p++) = 1 → p increments → now p → arr[1] → *p = 2 → 1+2=3 ✅.
Answer: 3.


71.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    int **q = &p;
    *p += 5;
    printf("%d", **q);
}

A) 10
B) 15
C) Compiler error
D) 5

Answer: B
Explanation:
*p +=5 → a=15 → **q dereference = 15.


72.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1,2,3};
    int *p = arr;
    p += 2;
    printf("%d", *p);
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: C
Explanation:
Pointer arithmetic → arr+2 → arr[2] → 3.


73.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    int **q = &p;
    printf("%d", *p + **q);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
*p=5, **q=5 → sum=10.


74.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1,2,3,4};
    int *p = arr;
    printf("%d", *(p+3));
}

A) 1
B) 2
C) 3
D) 4

Answer: D
Explanation:
*(p+3) → arr[3] = 4.


75.

Output:

#include <stdio.h>
int main() {
    int a = 10;
    int *p = &a;
    int **q = &p;
    **q -= 5;
    printf("%d", a);
}

A) 10
B) 5
C) Compiler error
D) 0

Answer: B
Explanation:
**q → p → a → a -=5 → 5.


76.

Output:

#include <stdio.h>
int main() {
    int arr[] = {5,10,15};
    int *p = arr;
    printf("%d", *(p++) + *(p++));
}

A) 5
B) 15
C) 20
D) Compiler error

Answer: C
Explanation:
*(p++)=5, p → arr[1], *(p++)=10 → sum = 15? Wait carefully.
*(p++)=5, p increments → now p→ arr[1], *(p++)=10 → sum=5+10=15 ✅.


77.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", (*p)++);
}

A) 5
B) 6
C) Compiler error
D) 0

Answer: A
Explanation:
Post-increment prints 5 → a becomes 6.


78.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", ++*p);
}

A) 5
B) 6
C) Compiler error
D) 0

Answer: B
Explanation:
Pre-increment → increments value before printing → 6.


79.

Output:

#include <stdio.h>
int main() {
    int arr[3] = {1,2,3};
    int *p = arr;
    printf("%d", *(p+1) * 2);
}

A) 2
B) 4
C) 6
D) Compiler error

Answer: B
Explanation:
(p+1) = 2 → 22=4.


80.

Output:

#include <stdio.h>
int main() {
    int a = 5;
    int *p = &a;
    printf("%d", *p + 10);
}

A) 5
B) 10
C) 15
D) Compiler error

Answer: C
Explanation:
*a = 5 → 5+10=15.


81.

Output:

#include <stdio.h>
int main() {
    int arr[] = {1,2,3};
    int *p = arr;
    printf("%d", *(p++) + *(++p));
}

A) 3
B) 4
C) 5
D) Compiler error

Answer: C
Explanation:
*(p++)=1, ++p → p points arr[2] → *p=3 → sum =1+3=4? Wait carefully.
p starts at arr[0], *(p++)=1 → p→ arr[1], ++p → p→ arr[2], *p=3 → sum=1+3=4 ✅.

Answer: 4


82.

Output:

#include <stdio.h>
int main() {
    int a=5;
    int *p=&a;
    printf("%d", *p * *p);
}

A) 5
B) 10
C) 25
D) Compiler error

Answer: C
Explanation:
5*5=25.


83.

Output:

#include <stdio.h>
int main() {
    int arr[2]={10,20};
    int *p=arr;
    printf("%d", *(p+1) / *p);
}

A) 2
B) 0
C) 1
D) Compiler error

Answer: A
Explanation:
20/10=2.


84.

Output:

#include <stdio.h>
int main() {
    int a=10;
    int *p=&a;
    int **q=&p;
    printf("%d", **q);
}

A) 10
B) Address of a
C) Compiler error
D) 0

Answer: A
Explanation:
**q → p → a → 10.


85.

Output:

#include <stdio.h>
int main() {
    int arr[]={1,2,3,4};
    int *p=arr;
    printf("%d", *(p+3)-*(p));
}

A) 3
B) 4
C) 5
D) Compiler error

Answer: A
Explanation:
*(p+3)=4, *p=1 →

4-1=3.


86.

Output:

#include <stdio.h>
int main() {
    int arr[]={1,2,3};
    int *p=arr;
    printf("%d", *(++p));
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: B
Explanation:
++p → points arr[1] → *p=2.


87.

Output:

#include <stdio.h>
int main() {
    int arr[]={1,2,3};
    int *p=arr+2;
    printf("%d", *(p--));
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: C
Explanation:
*(p–) prints arr[2]=3, then pointer decrements.


88.

Output:

#include <stdio.h>
int main() {
    int a=5;
    int *p=&a;
    printf("%d", (*p)++);
}

A) 5
B) 6
C) Compiler error
D) 0

Answer: A
Explanation:
Post-increment → prints 5 → a=6.


89.

Output:

#include <stdio.h>
int main() {
    int a=5;
    int *p=&a;
    printf("%d", ++(*p));
}

A) 5
B) 6
C) Compiler error
D) 0

Answer: B
Explanation:
Pre-increment → a=6, prints 6.


90.

Output:

#include <stdio.h>
int main() {
    int arr[]={1,2,3,4};
    int *p=arr;
    printf("%d", *(p+1)+*(p+2));
}

A) 3
B) 5
C) 6
D) Compiler error

Answer: B
Explanation:
*(p+1)=2, *(p+2)=3 → sum=5.


91.

Output:

#include <stdio.h>
int main() {
    int a=5;
    int *p=&a;
    int **q=&p;
    printf("%d", **q+2);
}

A) 5
B) 7
C) Compiler error
D) 2

Answer: B
Explanation:
**q → p → a → 5+2=7.


92.

Output:

#include <stdio.h>
int main() {
    int arr[]={2,4,6};
    int *p=arr;
    printf("%d", *(p+2)/*(p));
}

A) 2
B) 3
C) 6
D) Compiler error

Answer: B
Explanation:
*(p+2)=6, *p=2 → 6/2=3.


93.

Output:

#include <stdio.h>
int main() {
    int a=10;
    int *p=&a;
    printf("%d", *p*2);
}

A) 10
B) 20
C) Compiler error
D) 0

Answer: B
Explanation:
10*2=20.


94.

Output:

#include <stdio.h>
int main() {
    int arr[]={1,2,3};
    int *p=arr;
    printf("%d", *(p+0)+*(p+2));
}

A) 1
B) 3
C) 4
D) 5

Answer: D
Explanation:
*(p+0)=1, *(p+2)=3 → sum=4 → Wait carefully. Sum=1+3=4 ✅

Answer: 4


95.

Output:

#include <stdio.h>
int main() {
    int a=5;
    int *p=&a;
    *p += 10;
    printf("%d", a);
}

A) 5
B) 10
C) 15
D) Compiler error

Answer: C
Explanation:
*a += 10 → 5+10=15.


96.

Output:

#include <stdio.h>
int main() {
    int arr[]={1,2,3};
    int *p=arr;
    printf("%d", *p + *(p+1) + *(p+2));
}

A) 5
B) 6
C) 7
D) Compiler error

Answer: B
Explanation:
1+2+3=6.


97.

Output:

#include <stdio.h>
int main() {
    int a=5;
    int *p=&a;
    int **q=&p;
    printf("%d", **q);
}

A) 0
B) 5
C) Compiler error
D) Address of a

Answer: B
Explanation:
**q → p → a → 5.


98.

Output:

#include <stdio.h>
int main() {
    int arr[]={1,2,3,4};
    int *p=arr;
    printf("%d", *(p+3)-*(p+1));
}

A) 2
B) 3
C) 1
D) Compiler error

Answer: A
Explanation:
*(p+3)=4, *(p+1)=2 → 4-2=2.


99.

Output:

#include <stdio.h>
int main() {
    int arr[]={10,20,30};
    int *p=arr;
    printf("%d", *(p+1)/ *(p));
}

A) 1
B) 2
C) 3
D) Compiler error

Answer: B
Explanation:
20/10=2.


100.

Output:

#include <stdio.h>
int main() {
    int a=5;
    int *p=&a;
    printf("%d", *p + *p);
}

A) 5
B) 10
C) Compiler error
D) 0

Answer: B
Explanation:
*a=5 → 5+5=10.