:: Re: [DNG] Making sense of C pointer…
Top Page
Delete this message
Reply to this message
Author: aitor_czr
Date:  
To: Emiliano Marini, Rainer Weikusat, dng
Subject: Re: [DNG] Making sense of C pointer syntax.
Hi,

On 03/31/16 13:38, Emiliano Marini <emilianomarini82@???> wrote:
> Besides, * and [] are interchangeable. You can define a string as an array
> and use it later as a pointer:
>
> char s[] = "hola";
> char x = s[1];     // Here x = 'o'
> char y = *(s+2);   // Here y = 'l'

>
> And vice versa:
>
> char *s = "hola";
> char x = s[0];     // Here x = 'h'
> char y = *(s+3);   // Here y = 'a'


This is right, and the following sintax are analogous:

      *(p+i) <--->  p[i]


*(*(p+i)+j) <---> p[i][j]

This last one in the case of a double pointer.

> On Wed, Mar 30, 2016 at 6:04 PM, Rainer Weikusat <
> rainerweikusat@???> wrote:
>
> There's one
> >important difference:
> >
> >char chars[] = "12345";
> >
> >cause the compiler to reserve six bytes (five chars + terminating 0) in
> >some location the program can write to. Afterwards,
> >
> >*chars = R;
> >
> >could be used to change the string to R2345.


This is because

*chars <---> *(chars+0) <---> chars[0]

are analogous. So, chars[0] changes from 1 to R.

Aitor.