@srestha,
I show the LHS assignment for A[2][3], A[2] in this code. Please run the code.
For B[1] you can't have LHS assignment. B is the base address of the array. You can't make B to point any elsewhere.
#include<stdio.h>
int main() {
int *A[10]; // A is an array of pointer. Type of A is int *(*).
int a[5] = {1, 2, 3, 4, 5}; // 'a' decays to the type int *.
A[2] = a; // A[0] will have type int *. 'a' also have same type so this is valid.
int **p2 = (A + 2); // p2 and A both have same type int **.
printf("%d\n", **p2);
printf("%d\n", A[2][3]);
A[2][3] = 10;
printf("%d\n", A[2][3]);
}