Pointer question with solution

(q)What will output : void main() { int * p,b; b=sizeof(p); printf(“%d”,b); } Output: 2 or 4 Explanation: Since in this question it has not written p is which type pointer. So it’s output will depends upon which memory model has selected. Default memory model is small. More detail click here (q)What will be output ? void main() { int huge *a=(int huge *)0x59990005; int huge *b=(int huge *)0x59980015; if(a==b) printf("power of pointer"); else printf("power of c"); getch(); } Output: power of pointer Explanation: Here we are performing relational operation between two huge address. So first both a and b will normalize. a=(0x5999)* (0x10)+(0x0005)=0x9990+0x0005=0x9995 b=(0x5998)* (0x10)+(0x0015)=0x9980+0x0015=0x9995 Here both huge address is representing same physical address. So a==b is true. read huge pointer click here (5)What will be output ? #include #include void main() { int (*ptr1)(); int (*ptr2)(); void (*ptr3)(); ptr1=puts; ptr2=getch; ptr3=clrscr; (*ptr3)(); (*ptr1)("POWER OF POINTER"); (*ptr2)(); } Output: POWER OF POINTER (q) What will be output ? void main() { char *arr[3]; char a=1,b=2,c=3; arr[0]=&a; arr[1]=&b; arr[2]=&c; clrscr(); printf("%u %u",&b,arr[1]); printf("\n%d",*arr[2]); getch(); } Output : any addresss same address 3 (q) What will be output ? #include #include void main() { char arr[5]={1,2,3,4,5}; char (*ptr)[5]; ptr=&arr; ptr=(*ptr)+2; clrscr(); printf("%d",**ptr); getch(); } Output: 3 (q) What will be output ? #include #include unsigned long int (* avg())[3] { static unsigned long int arr[3]={1,2,3}; return &arr; } void main() { unsigned long int (*ptr)[3]; ptr=avg(); clrscr(); printf("%d",*(*ptr+2)); getch(); } Output :3 How to read difficult pointer click here

No comments: