On Mon, 2005-10-31 at 16:36, Matthew Saltzman wrote:
>
> I meant to comment that these two different notations are functionally
> identical; an array name is nothing more than a pointer. For example,
> if we have the following code:
>
>
> #include <stdio.h>
> void main (void){
>
> char foo[] = "This is a string\n";
> char *bar = foo;
>
> /* these expressions all print "T\n" */
> printf("%c\n", foo[0]);
> printf("%c\n", *bar);
> printf("%c\n", bar[0]);
> printf("%c\n", *foo);
/* ...and my favorite... */
printf("%c\n", 0[foo]);
>
> /* these expressions all print "i\n" */
> printf("%c\n", foo[2]);
> printf("%c\n", *(bar + 2));
> printf("%c\n", bar[2]);
> printf("%c\n", *(foo + 2));
printf("%c\n", 2[foo]);
/* That's right, folks, [] is commutative! */
/* Or, if you have a strong stomach, simplify to:
printf("%c\n", "This is a string\n"[2]) ;
printf("%c\n", 2["This is a string\n"] ) ;
/* It's all simple addition...*/
> }
--
Les Mikesell
lesmikesell(a)gmail.com