Open In App

GATE | GATE CS 2018 | Question 52

Like Article
Like
Save
Share
Report

Consider the following C program:




#include <stdio.h>
void fun1(char *s1, char *s2) {
  char *temp;
  temp = s1;
  s1 = s2;
  s2 = temp;
}
void fun2(char **s1, char **s2) {
  char *temp;
  temp = *s1;
  *s1 = *s2;
  *s2 = temp;
}
int main() {
  char *str1 = "Hi", *str2 = "Bye";
  fun1(str1, str2);
  printf("%s %s", str1, str2);
  fun2(&str1, &str2);
  printf("%s %s", str1, str2);
  return 0;
}


The output of the program above is

(A) Hi Bye Bye Hi
(B) Hi Bye Hi Bye
(C) Bye Hi Hi Bye
(D) Bye Hi Bye Hi


Answer: (A)

Explanation: fun1(char *s1, char *s2)
Above function scope is local, so the value changed here won’t affect actual parameters. SO the values will be ‘Hi Bye’.
 
fun2(char **s1, char **s2)
In this function value is pointer to pointer, so it changes pointer of the actual value. So values will be ‘Bye Hi’

Answer is ‘Hi Bye Bye Hi’

 
Option (A) is correct.


Quiz of this Question


Last Updated : 09 Mar, 2018
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads