search
Log In
1 vote
318 views
main()
 {
     int arr2D[3][3];
     printf("%d\n", ((arr2D==* arr2D)&&(* arr2D == arr2D[0])) );
 }
in Puzzles 318 views

1 Answer

3 votes
 
Best answer
 

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[0] is the another way of writing *(arr2D + 0).

So the expression (*(arr2D + 0) == arr2D[0]) 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

0 votes
2 answers
1
224 views
#include <stdio.h> int main() { int a[][3] = {1, 2, 3, 4, 5, 6}; int (*ptr)[3] = a; // LINE 5 printf("%d %d ", (*ptr)[1], (*ptr)[2]); //LINE 6 ++ptr; printf("%d %d\n", (*ptr)[1], (*ptr)[2]); return 0; } (a) 2 3 5 6 (b) 2 3 4 5 (c) 4 5 0 0 (d) none of the above
asked May 16, 2016 in Programming Desert_Warrior 224 views
6 votes
1 answer
2
486 views
#include <stdio.h> void f(char**); int main() { char *argv[] = { "ab", "cd", "ef", "gh", "ij", "kl" }; f(argv); return 0; } void f(char **p) { char *t; t = (p += sizeof(int))[-1]; printf("%s\n", t); } (a) ab (b) cd (c) ef (d) gh In GATE Exam, if not specified What should be size of integer?
asked May 16, 2016 in Programming Desert_Warrior 486 views
0 votes
1 answer
3
185 views
#include<stdio.h> int a = 10; int main() { fun(); fun(); return 0; } int fun() { static int a = 1; printf("%d ",a); a++; return 0; }
asked May 16, 2016 in Programming Desert_Warrior 185 views
0 votes
1 answer
4
295 views
#include<stdio.h> #include<stdlib.h> int main() { char s[] = "Opendays2012"; int i = 0; while(*(s++)) i++; printf("%d",i); return 0; } (a) Segmentation Fault (b) Compile Error (c) 12 (d) 0
asked May 16, 2016 in Programming Desert_Warrior 295 views
...