Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C > Re: request for...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 9 of 15 Topic 26115 of 26821
Post > Topic >>

Re: request for member in something not a structure or union

by Bart <bc@[EMAIL PROTECTED] > May 9, 2008 at 04:20 AM

On May 9, 8:50=A0am, "cr88192" <cr88...@[EMAIL PROTECTED]
> wrote:
> "pete" <pfil...@[EMAIL PROTECTED]
> wrote in message
>
> news:a--dnSl1Xs7fW7_VnZ2dnUVZ_scAAAAA@[EMAIL PROTECTED]
>
> > deepak wrote:
> >> Hi Experts,
>
> >> I'm getting this compilation error while trying to access a member in
> >> structure.
> >> at what time we will get this error message?
>
> > When you use a dot operator (.)
> > when you should be using an arrow operator (->)
> > instead.
>
> now, a mystery, maybe somone will know:
> why exactly is it that . and -> were originally made to be separate
> operators anyways?...
>
> what exactly is the cost of, say, a compiler implementor being lazy and
> treating both cases as equivalent? (well, apart from maybe the risk of a
> user writing code which will promptly break if used on a more
> standards-conformant compiler...).

I understand . and -> to do different things:

s.f    accesses field f of struct s
p->f   accesses field f of a struct pointed to by p. I think
equivalent to (*p).f.

Allowing (*p).f and p.f to be equivalent surely is a bad idea,
breaking the type system in an unnecessary way, and rendering code
less readable:

struct r *a, b; /* Hidden away somewhere */

x =3D a.f;    /* These look seductively similar */
y =3D b.f;    /* until you write: */
a =3D b;      /* Error */

C doesn't allow dotted selections on a value other than for field
access, otherwise it would be clear that, when p is a pointer,
sometimes you want to access a property of the pointer, and not the
thing it points to; inventing a property .bytes:

size =3D p.bytes;     /* Bytes in the pointer */
size =3D (*p).bytes;  /* Bytes in the thing it points to */

This doesn't work well with -> however: p->bytes. In fact -> is an
ugly construct only tolerated because (*p). is worse! Pascal syntax
for this stuff is cleaner:

p        {a pointer value}
p^       {the record p points to}
p^.f     {field of the record p points to}
p.f      {error}
p.bytes  {bytes in the pointer}
p^.bytes {bytes in the record}


--
Bartc
 




 15 Posts in Topic:
request for member in something not a structure or union
deepak <deepakpjose@[E  2008-05-08 02:12:57 
Re: request for member in something not a structure or union
pete <pfiland@[EMAIL P  2008-05-08 05:22:08 
Re: request for member in something not a structure or union
"cr88192" <c  2008-05-09 17:50:20 
Re: request for member in something not a structure or union
lawrence.jones@[EMAIL PRO  2008-05-09 14:56:54 
Re: request for member in something not a structure or union
"cr88192" <c  2008-05-10 06:59:01 
Re: request for member in something not a structure or union
Nick Keighley <nick_ke  2008-05-08 02:23:03 
Re: request for member in something not a structure or union
Richard Heathfield <rj  2008-05-08 09:27:30 
Re: request for member in something not a structure or union
viza <tom.viza@[EMAIL   2008-05-08 03:09:36 
Re: request for member in something not a structure or union
Bart <bc@[EMAIL PROTEC  2008-05-09 04:20:10 
Re: request for member in something not a structure or union
richard@[EMAIL PROTECTED]  2008-05-09 12:06:46 
Re: request for member in something not a structure or union
Keith Thompson <kst-u@  2008-05-09 11:32:10 
Re: request for member in something not a structure or union
Bart <bc@[EMAIL PROTEC  2008-05-09 12:30:34 
Re: request for member in something not a structure or union
Chris Torek <nospam@[E  2008-05-09 19:50:08 
Re: request for member in something not a structure or union
richard@[EMAIL PROTECTED]  2008-05-09 20:26:43 
Re: request for member in something not a structure or union
Keith Thompson <kst-u@  2008-05-09 14:24:04 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Jul 9 1:15:28 CDT 2008.