How ptr arithmitic works??? It doesn't make any sense....
ag0aep6g
anonymous at example.com
Mon Dec 5 18:01:47 UTC 2022
On Monday, 5 December 2022 at 15:08:41 UTC, rempas wrote:
> Got it! I guess they could also just allow us to use bracket
> notation to do the same thing. So something like:
>
> ```d
> foreach (i; 0 .. list.length) {
> (cast(int*)ptr[i]) = i;
> }
> ```
>
> This is what happens with arrays anyways. And arrays ARE
> pointers to a contiguous memory block anyways so they could do
> the same with regular pointers. The example also looks more
> readable.
You can use bracket notation with pointers. You just need to move
your closing parenthesis a bit.
Assuming that `ptr` is a `void*`, these are all equivalent:
```d
(cast(int*) ptr)[i] = whatever;
*((cast(int*) ptr) + i) = whatever;
*(cast(int*) (ptr + i * int.sizeof)) = whatever;
```
More information about the Digitalmars-d-learn
mailing list