By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,130 Members | 1,365 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,130 IT Pros & Developers. It's quick & easy.

Can anybody tell me the reason

P: n/a
can anybody tell me the reason why following code is not working?
int *funct()
{
int p=10;
return &p;
}
int *ptr;
funct() = ptr; //------->Giving Compile time error
(LValue)


can anybody plz tell me the reason of this.

Jul 4 '06 #1
Share this Question
Share on Google+
12 Replies


P: n/a
Ashu wrote:
int *funct()
{
int p=10;
return &p;
}
First do not return address of local variable. This is not a compile
error but the effect is undefined and it may lead to

exception. Compiler gives a warning on this statement.
int *ptr;
funct() = ptr; //------->Giving Compile time error
(LValue)

can anybody plz tell me the reason of this.
it should be like this..

ptr = funct();

we should assign a value to left hand side variable (even in general
math).

-- Murali Krishna.

Jul 4 '06 #2

P: n/a

"Ashu" <as***********@gmail.comwrote in message
news:11**********************@j8g2000cwa.googlegro ups.com...
can anybody tell me the reason why following code is not working?
int *funct()
{
int p=10;
return &p;
}
int *ptr;
funct() = ptr; //------->Giving Compile time error
func() is a rhv (Right hand value).
ptr is a lhv (Left hand value/variable).
In C and C++ you put on the left the thing you want to get changed (the
left hand value).

ptr = func();
means, Load into ptr the value of func().

func() = ptr;
does not work because you can not load a function with a value, you can only
pass them values (well, in some cases you can in c++, but that's a different
story).
(LValue)


can anybody plz tell me the reason of this.

Jul 4 '06 #3

P: n/a
Geo

Ashu wrote:
can anybody tell me the reason why following code is not working?
int *funct()
{
int p=10;
return &p;
}
int *ptr;
funct() = ptr; //------->Giving Compile time error
(LValue)


can anybody plz tell me the reason of this.
Looks like you haven't bothered to read even the most basic C++ book
!!!!

Jul 4 '06 #4

P: n/a

Geo wrote:
Ashu wrote:
can anybody tell me the reason why following code is not working?
int *funct()
{
int p=10;
return &p;
}
int *ptr;
funct() = ptr; //------->Giving Compile time error
(LValue)


can anybody plz tell me the reason of this.

Looks like you haven't bothered to read even the most basic C++ book
!!!!



Boss I think u need to study some book nd for kind information of u
all, u can assign like this

func() = ptr
there is no problem in that if ptr is reference to some int and func()
also returning some reference but the problem is coming in case of
pointers only and i want to know why.

and please please u all who are saying that this is wrong or we do it
other way in maths also , study some good books about LValue and then u
will know that this works and how exactly C++ works.
nyways thanks for ur replies

Jul 5 '06 #5

P: n/a
Ashu wrote:
>
Boss I think u need to study some book nd for kind information of u
all, u can assign like this

func() = ptr
there is no problem in that if ptr is reference to some int and func()
also returning some reference but the problem is coming in case of
pointers only and i want to know why.

and please please u all who are saying that this is wrong or we do it
other way in maths also , study some good books about LValue and then u
will know that this works and how exactly C++ works.
nyways thanks for ur replies
Can we have that again in something approaching English?

--
Ian Collins.
Jul 5 '06 #6

P: n/a
"Ashu" wrote:
int *funct()
{
int p=10;
return &p;
}
You're trying to return the address of a local. That won't
work, because the local ceases to exist when you exit funct.
int *ptr;
You failed to initializ ptr, so you don't know where it's
pointing, nor do you know what it's pointing at.
funct() = ptr; //------->Giving Compile time error
There's 3 different errors there:
1. Uninitialized pointer
2. Unknown target
3. Assigning to an rvalue

If you're trying to get one function to alter a variable in
another, that can be done, but you'd have to declare p as "static"
and return a reference, like so:

#include <iostream>
int& funct()
{
static int p = 10;
std::cout << p << std::endl;
return p;
}

int main()
{
int x = 17;
funct() = x; // prints "10", then assigns 17 to "p" in "funct"
funct(); // prints "17"
return 0;
}
--
Cheers,
Robbie Hatley
Tustin, CA, USA
lonewolfintj at pacbell dot net
(put "[usenet]" in subject to bypass spam filter)
http://home.pacbell.net/earnur/
Jul 5 '06 #7

P: n/a
Geo

Ashu wrote:
Geo wrote:
Ashu wrote:
can anybody tell me the reason why following code is not working?
>
>
int *funct()
{
int p=10;
return &p;
}
>
>
int *ptr;
funct() = ptr; //------->Giving Compile time error
(LValue)
>
>
>
>
can anybody plz tell me the reason of this.
Looks like you haven't bothered to read even the most basic C++ book
!!!!




Boss I think u need to study some book nd for kind information of u
all, u can assign like this

func() = ptr
there is no problem in that if ptr is reference to some int and func()
also returning some reference but the problem is coming in case of
pointers only and i want to know why.

and please please u all who are saying that this is wrong or we do it
other way in maths also , study some good books about LValue and then u
will know that this works and how exactly C++ works.
nyways thanks for ur replies
Besides the fact that you code is completely broken, the fact that it
doesn't even compile suggests that it isn't in fact "how exactly C++
works".

Jul 5 '06 #8

P: n/a
Ashu wrote:
Boss I think u need to study some book nd for kind information of u
all, u can assign like this

func() = ptr

there is no problem in that if ptr is reference to some int and func()
also returning some reference but the problem is coming in case of
pointers only and i want to know why.

and please please u all who are saying that this is wrong or we do it
other way in maths also , study some good books about LValue and then u
will know that this works and how exactly C++ works.
nyways thanks for ur replies.
Hi Ashu,

I think you are from India (me too).
My friend, don't just start an argument. People here know more than
you and me.
I have seen people from all over the world answering to complex
questions.
Most of the time I try to analyze what they write.

If you or me really know how C++ works, we wouldn't have come here.
And this is your second post..
Don't be such emotional. C++ is just one more language to learn.

and in math, I never did in that way.

-- Murali Krishna

Jul 5 '06 #9

P: n/a

Murali Krishna wrote:
Ashu wrote:
Boss I think u need to study some book nd for kind information of u
all, u can assign like this

func() = ptr

there is no problem in that if ptr is reference to some int and func()
also returning some reference but the problem is coming in case of
pointers only and i want to know why.

and please please u all who are saying that this is wrong or we do it
other way in maths also , study some good books about LValue and then u
will know that this works and how exactly C++ works.
nyways thanks for ur replies.

Hi Ashu,

I think you are from India (me too).
My friend, don't just start an argument. People here know more than
you and me.
I have seen people from all over the world answering to complex
questions.
Most of the time I try to analyze what they write.

If you or me really know how C++ works, we wouldn't have come here.
And this is your second post..
Don't be such emotional. C++ is just one more language to learn.

and in math, I never did in that way.

-- Murali Krishna

Hi Murali

Thanks buddy for ur reply and I am sorry to all for my remarks.

Actually you are right we all are like small fish in this sea of C++
which is too deep to master fully........

nyways thanks again for the replies, hope to put more such studid
queries soon buddies...

bye

Jul 5 '06 #10

P: n/a
Hi Murali
>
Thanks buddy for ur reply and I am sorry to all for my remarks.
a happy and sentimental ending in Indian cinema way..
Actually you are right we all are like small fish in this sea of C++
which is too deep to master fully........
not a sea. Faculties tell them in that way.. that Java is an ocean,
C++ is vast.

I can't learn some thing if it is like an ocean.

what does buddies mean? I really dont know.

-- Murali Krishna

Jul 5 '06 #11

P: n/a
Ashu schrieb:
Geo wrote:
>Ashu wrote:
>>can anybody tell me the reason why following code is not working?
int *funct()
{
int p=10;
return &p;
}
int *ptr;
funct() = ptr; //------->Giving Compile time error
(LValue)
[...]
>

Boss I think u need to study some book nd for kind information of u
all, u can assign like this

func() = ptr
If func() returns an Lvalue, you can do that.

However, a pointer by itself is an rvalue, just like an int:

int getInt() { return ... }
int* getPointer() { return ... }

int i;

getInt() = 10; // won't work
getPointer() = &i; // won't work

But a pointer can be used to form an lvalue. By dereferencing the
pointer, you get an lvalue for the pointee:

*getPointer() = 10; // works (or better: compiles)

But!! the function above is dangerous:
>>int *funct()
{
int p=10;
return &p;
}
This will return a pointer to a local variable, which lifetime ends by
leaving the function. If you dereference the pointer, you invoke
undefined behaviour.

You can return a pointer to a static variable, which is often used for
singletons (but I would return a reference):

class Singleton;

Singleton* getSingleton()
{
static Singleton instance;
return &instance;
}

--
Thomas
Jul 5 '06 #12

P: n/a
"Murali Krishna" <pm*********@gmail.comwrote in message
news:11*********************@a14g2000cwb.googlegro ups.com...
>Hi Murali

Thanks buddy for ur reply and I am sorry to all for my remarks.

a happy and sentimental ending in Indian cinema way..
>Actually you are right we all are like small fish in this sea of C++
which is too deep to master fully........

not a sea. Faculties tell them in that way.. that Java is an ocean,
C++ is vast.

I can't learn some thing if it is like an ocean.

what does buddies mean? I really dont know.

-- Murali Krishna
"Buddy" is a variation on "chum", "mate", "pal", etc. They all mean
something like "friend".

HTH :)
Stu
Jul 5 '06 #13

This discussion thread is closed

Replies have been disabled for this discussion.