int *A[10] is an array named A . A has 10 elements. Every element is pointing to an integer .
if used as left hand sides of assignment
lets underastand this line by example;
#include <stdio.h>
int x;
int main() {
int *a[10];
a[2] = &x;
return 0;
}
here, look how we assign the address of x in the pointer which is in the a[2]. now, a[2] is written left hand side of assignment operator.
it works. But, B[1] will not work, why?
i.e, we cant assign anything to B[1] .like B[1] = 125 , B[1] = &d. No you cant assign anything. because, B always carry the starting address of 0th index of the 2D array.Its constant.
but , B[2][3] = 125; this works perfectly. because, here, you are assigning value to the 3rd index of the 2nd row of 2D array.
A[2][3] will also works .
look, an integer pointer can point to 0th index of an array. check the below example;
#include <stdio.h>
int main() {
int *a[10];
int arr[] = {6, 156, 82, 4, 45};
a[2] = arr;
// Modify the value at the fourth position of the array accessed through a[2]
a[2][3] = 62;
// Output the modified value
printf("Modified value: %d\n", a[2][3]);
return 0;
}
So, Correct option is A