C++ Programming - References - Discussion
Discussion Forum : References - General Questions (Q.No. 12)
12.
Which of the following statements is correct?
- We can return a global variable by reference.
- We cannot return a local variable by reference.
Discussion:
23 comments Page 1 of 3.
Nidhi said:
1 decade ago
Why is 1st wrong??
int& ret ()
{
int &d=g;
d=100;cout<<g;
return(d);
}
works fine where g is a global variable
nd in main i can do
ret()+=10;
cout<<"global value"<<g<<endl;
its 110;
int& ret ()
{
int &d=g;
d=100;cout<<g;
return(d);
}
works fine where g is a global variable
nd in main i can do
ret()+=10;
cout<<"global value"<<g<<endl;
its 110;
Rahul said:
1 decade ago
@nidhi : Agreed !!! both options are correct..
Vinay said:
1 decade ago
We can return the global variable by reference and it is wrongly answered here. The correct option is C.
Preetham said:
1 decade ago
You cannot return reference of local variable, by return statement function ends and memory attached to the local variable will be deleted or freed by the compiler. So the reference does not have anything to refer local variable is already deleted.
Pravee said:
1 decade ago
But if you see. ith following code works perfectly fine. It displays the value 9.
int& myfunc()
{
int i=9;
return i;
}
int main() {
int g=myfunc();
cout<<g<<endl;
return 0;
}
int& myfunc()
{
int i=9;
return i;
}
int main() {
int g=myfunc();
cout<<g<<endl;
return 0;
}
Rishi said:
1 decade ago
We can Return a global variable, but not a local as a local variable goes out of scope once a function call is over.
Abhirav Kumar said:
1 decade ago
@Pravee. Already proved that 2 is correct. Is there someone who knows why 1 is incorrect?
Wouter van ooijen said:
1 decade ago
You CAN do both in the sense that it syntactically allowed, but returning a local variable by reference yields a program that has undefined runtime behavior. So the point is what is meant by 'CAN'.
Raj said:
1 decade ago
We can not return a global variable by reference.
We can return a local variable by reference.
We can return a local variable by reference.
Yogesh said:
9 years ago
We can return global variable by reference.
But can not return a local variable by reference.
The code written by @Pravee is working fine because after returning from the function, the value goes out of scope but that memory is not allocated by some other variable. So we are able to print proper value. But if that memory will be allocated by some other variable, then we will not able to get the correct value.
But can not return a local variable by reference.
The code written by @Pravee is working fine because after returning from the function, the value goes out of scope but that memory is not allocated by some other variable. So we are able to print proper value. But if that memory will be allocated by some other variable, then we will not able to get the correct value.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers