# interview\ C program\ What is output

1 vote
318 views
main()
{
int arr2D;
printf("%d\n", ((arr2D==* arr2D)&&(* arr2D == arr2D)) );
}
in Puzzles



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

selected by
0

The name arr2D refers to the beginning of all the 3 arrays containing 3 integer each.  ?

what is the meaning here

0
Means the name arr2D is pointing to the base address of 2-D array.
0

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)

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???

0

arr2D contains address *arr2D points first  elem location's singledim sub array so both are same ## Related questions

1
224 views
#include <stdio.h> int main() { int a[] = {1, 2, 3, 4, 5, 6}; int (*ptr) = a; // LINE 5 printf("%d %d ", (*ptr), (*ptr)); //LINE 6 ++ptr; printf("%d %d\n", (*ptr), (*ptr)); return 0; } (a) 2 3 5 6 (b) 2 3 4 5 (c) 4 5 0 0 (d) none of the above