Insight: Pointer increment (ptr++) advances the pointer by the size of its data type (elements), not by a single byte, even though the postfix ++ operator is used.
Exam route: Evaluate A: (*ptr)++ increments the value, ptr++ moves to the next element. A is true. Evaluate R: ptr++ advances by 1 byte. This is false; it advances by sizeof(type) bytes. Therefore, A is true, R is false.
Learning route:
Step 1: Analyze Assertion (A). (*ptr)++ dereferences first, incrementing the value at arr[1]. Then ptr++ increments the pointer itself, moving it to point to the next element, arr[2]. Assertion (A) is true.
Step 2: Analyze Reason (R). The first part about parentheses is correct. However, the second part claims ptr++ advances the address by "exactly 1 byte".
Step 3: Recall that pointer arithmetic scales by the data type size. If ptr is an int *, it advances by 4 bytes, not 1 byte.
Step 4: Conclude that Reason (R) is false due to this unit mismatch.
Tempting wrong path: A student might choose Option A, accepting the "1 byte" claim because the ++ operator literally means "add 1". This breaks the rule of scaled pointer arithmetic, confusing the increment of the pointer variable (by 1 element) with the byte offset added to the address.
Generalization: ptr++ advances the pointer by 1 element, which equals sizeof(type) bytes, never universally 1 byte.
Verification: If ptr is int * at address 1000, ptr++ results in address 1004, disproving the "1 byte" claim in R.
Answer: A is true, but R is false.