Can anybody tell me the reason

A

Ashu

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.
 
M

Murali Krishna

Ashu said:
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.
 
J

Jim Langston

Ashu said:
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).
 
G

Geo

Ashu said:
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
!!!!
 
A

Ashu

Geo said:
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
 
R

Robbie Hatley

Ashu said:
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/
 
I

Ian Collins

Ashu said:
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?
 
G

Geo

Ashu said:
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".
 
M

Murali Krishna

Ashu said:
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
 
A

Ashu

Murali said:
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
 
M

Murali Krishna

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
 
T

Thomas J. Gritzan

Ashu said:
[...]


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:

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;
}
 
S

Stuart Golodetz

Murali Krishna said:
a happy and sentimental ending in Indian cinema way..


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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top