Functions
(C-FAQ's)
Q1: What is the output of the following code? 
            int
iReverse(int iNum)
            {
                        if(
iNum == 0)
                                    return
0;
                        else
                                    printf("%d
", iNum);
                        iReverse(iNum--);
            }
            int main()
            {
                        int
iNum=6;
                        iReverse(iNum);
                        return
0;
            }
            A.        6 5 4 3 2 1
            B.        1 2 3 4 5 6 
            C.        6 5 4 3 2 1 0
            D.        6 till stack over flow
            Output:         
                        D. 6 till stack over flow
                         iReverse(iNum--) will not make any change in
the value of iNum because we are using a post decrement operator here.           
Q2: What is the output of the following code? 
            int iModify(int
iNum1, int iNum2)
            {
                        int
x,y;
                        x=
iNum1 * iNum2;
                        y=iNum1
+ iNum2;
                        return
(x,y);                        
            }
            int main()
            {
                        int
iA=5, iB=10;
                        iA=iModify(iA,iB);
                        printf("iA=%d\n",iA);
                        return
0;
            }
            A.        iA=5
            B.        iA=10 
            C.        iA=50
            D.        iA=15
            Output:         
iA=15
Q3: What is the output of the following code?
            void display
(char **ptr)
            {
                        char
*msg;
                        msg=(ptr
+= 4)[-2];
                        printf("%s\n",msg);
            }
            int main()
            {
                   char *msg[]={"Hi","Hello","world","function"};
                        display(msg);
                        return 0;
            }
            A.        function
            B.        world
            C.        Hello
            D.        Hi
            Output:
world
            Explanation:
                        msg is an array of strings. 
HI 
 | 
  
Hello 
 | 
  
World 
 | 
  
Function 
 | 
  |||||||||||
msg 
 | 
  
msg+1 
 | 
  
msg+2 
 | 
  
msg+3 
 | 
  
msg+4 
 | 
  ||||||||||
            In display(), initially value of ptr is base address of
msg.
                        ptr=msg;
            Then after expression ptr += 4, ptr is pointing to the
address msg+4. 
            Now ptr[-2] will get execute. Its means *(ptr - 2). Now
ptr will move back two positions. 
                        msg = *(msg+4 -2 );
                        msg = *(msg+2);
                        msg 
=  "World";
No comments:
Post a Comment