edited by
10,173 views
37 votes
37 votes

Consider the following C program:

#include <stdio.h>
typedef struct {
    char *a;
    char *b;
    } t;
void f1 (t s);
void f2 (t *p);
main()
{
    static t s = {"A", "B"};
    printf ("%s %s\n", s.a, s.b);
    f1(s);
    printf ("%s %s\n", s.a, s.b);
    f2(&s);
}
void f1 (t s)
{
    s.a = "U";
    s.b = "V";
    printf ("%s %s\n", s.a, s.b);
    return;
}
void f2(t *p)
{
    p -> a  = "V";
    p -> b = "W";
    printf("%s %s\n", p -> a, p -> b);
    return;
}

What is the output generated by the program ?

  1. $A \ B$
    $U \ V$
    $V \ W$
    $V \ W$
  2. $A \ B$
    $U \ V$
    $A \ B$
    $V \ W$
  3. $A \ B$
    $U \ V$
    $U \ V$
    $V \ W$
  4. $A \ B$
    $U \ V$
    $V \ W$
    $U \ V$
edited by

2 Answers

Best answer
40 votes
40 votes

First print $\text{A  B}$

$\textsf{f1}$ is call by value the changes applicable only for local

from $\textsf{f1},  \text{U V}$ is printed

back in main $\text{A B}$ is printed

then in $\textsf{f2}, \text{V W}$ is printed

Hence, answer is (B).

edited by
Answer:

Related questions

6.0k
views
3 answers
22 votes
Ishrat Jahan asked Nov 2, 2014
5,970 views
Choose the correct option to fill the $?1$ and $?2$ so that the program prints an input string in reverse order. Assume that the input string is terminated by a new line ...
9.8k
views
2 answers
35 votes
Ishrat Jahan asked Nov 2, 2014
9,767 views
What is the output of the following program?#include<stdio.h int funcf (int x); int funcg (int y); main () { int x = 5, y = 10, count; for (count = 1; count <= 2; ++count...
27.5k
views
6 answers
101 votes
Ishrat Jahan asked Oct 31, 2014
27,472 views
Which one of the choices given below would be printed when the following program is executed ?#include <stdio.h struct test { int i; char *c; }st[] = {5, "become", 4, "be...
12.5k
views
3 answers
30 votes
Ishrat Jahan asked Nov 2, 2014
12,500 views
Consider the following C program which is supposed to compute the transpose of a given $4 \times 4$ matrix $M$. Note that, there is an $X$ in the program which indicates ...