C++ | References | Question 4

Predict the output of following C++ program.

filter_none

edit
close

play_arrow

link
brightness_4
code

#include<iostream>
using namespace std;
  
int &fun()
{
    static int x = 10;
    return x;
}
int main()
{
    fun() = 30;
    cout << fun();
    return 0;
}

chevron_right


(A) Compiler Error: Function cannot be used as lvalue
(B) 10
(C) 30


Answer: (C)

Explanation: When a function returns by reference, it can be used as lvalue. Since x is a static variable, it is shared among function calls and the initialization line “static int x = 10;” is executed only once.
The function call fun() = 30, modifies x to 30. The next call “cout << fun()" returns the modified value.

Quiz of this Question

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.

My Personal Notes arrow_drop_up
Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.