printf("%d\n", ((arr2D==* arr2D)&&(* arr2D == arr2D)) );
The name arr2D refers to the beginning of all the 3 arrays containing 3 integer each.
*arr2D refers to the start of the first 1D array (of 3 integers) that is the same address as arr2D.
So the expression (arr2D == *arr2D) is true (1).
Similarly, *arr2D is nothing but *(arr2D + 0). Again arr2D is the another way of writing *(arr2D + 0).
So the expression (*(arr2D + 0) == arr2D) is true (1).
Ans- 1 && 1 = 1
The name arr2D refers to the beginning of all the 3 arrays containing 3 integer each. ?
what is the meaning here
how is this expression (arr2D == *arr2D) true
arr2D gives the base address of the array whereas *arr2D gives the value at the base address since we can write it as *(arr2D+0)
1st statement should be false..
arr2D is an address( we know array name is mnemonic for address, here it represent base address) and *aar2D is a pointer to array because of deferencing it will contain value inside the address...so both should not be equal ryt???
arr2D contains address *arr2D points first elem location's singledim sub array so both are same