> From: Christopher Schultz [mailto:ch...@christopherschultz.net]
> Subject: Re: [OT] JNI problem
> 
> C99 probably allows this:
> char s[20];
> sizeof s;
> 
> To yield 20, while strict, old-skool C would yield whatever "sizeof
> char*" would.

Not true; all versions of the C standard allowed the above, and all would 
evaluate to 20 for sizeof.  Contrary to popular belief, arrays and pointers are 
not equivalent, although they can be interchanged in many circumstances - 
sizeof not being one of them.

> In any case, it's always best to use strlen() to figure out how many
> chars are in a string.

It's not just best, it's mandatory.

> I guess you mean dynamic sizing and not dynamic allocation.

I said it was not dynamic allocation; dynamic sizing is not quite appropriate 
either, since the value is fixed for any given invocation of the function.

> It appears that:
>    sizeof arr
> compiles to the equivalent of:
>    val + sizeof char[6]

Yes, that's what I was pointing out.

> That's a pretty clever compiler.

It's required by the standard; not sure which version it went into, since I've 
only kept the 1999 one.

> Whatever happened to the days when compilers found ways to make 
> your life miserable instead of actually helping you out? ;)

I believe that Visual Studio has cornered the make-your-life-miserable part of 
the market.

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
MATERIAL and is thus for use only by the intended recipient. If you received 
this in error, please contact the sender and delete the e-mail and its 
attachments from all computers.

Reply via email to