--- In [email protected], "raj_duttaphookan"
<[EMAIL PROTECTED]> wrote:
>
> --- In [email protected], "John Matthews" <jm5678@> wrote:
> >
> > --- In [email protected], "raj_duttaphookan"
> > <raj_duttaphookan@> wrote:
> > >
> > > Why can't we simply
> > > define it as a pointer. It shall anyway hold the memory address
> and
> > > later on while dereferencing it, it shall automatically
> dereference it
> > > depending on whether the memory address it contained was that of
> an
> > > int or a float or a char etc.
> >
> > But when dereferencing, how would the compiler know what was
> stored in
> > the memory? It can't just use the destination type. For example:
> >
> > pointer p;
> > int i;
> >
> > i = *p;
> >
> > Does the memory pointed to by p contain a 4 byte integer, a 2 byte
> > integer, or a 1 byte character, all of which can be assigned to an
> > integer variable?
> >
> I guess the compiler would know it because when we define a variable
> it is assigned a memory address.
> so the compiler already know what is stored at address 10448 and
> what is stored at address 10566.
But to handle something like:
int getValue(pointer p)
{
return *p; // what type?
}
the compiler would have to maintain a list of all memory addresses and
the type of information in them.
John