GATE | GATE CS 2018 | Question 52
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
Share your thoughts in the comments
Please Login to comment...