On Friday, 13 August 2021 at 09:10:18 UTC, Tejas wrote:
On Friday, 13 August 2021 at 08:25:33 UTC, JG wrote:
Suppose one has a pointer p of type T*.
Can on declare variable a of type T which is stored in the location pointed to by p?
Umm is this what you want?
```d
import std.stdio;

struct S
{
  int x = 1234;
}


void main() {
    S s;
    /*(ref a){
         writeln(a);
         s.x = s.x + 1;
         writeln(a);
         a = a +1;
         writeln(s.x);
    }(s.x);*/

    auto a = &(s.x);
    writeln(*a);
    s.x += 1;
    writeln(*a);
    *a += 1;
    writeln(s.x);


}
```

That's also what I thought, although at first I thought JG meant dereferencing a pointer to a type without reallocating the content.

In a way comparable to aliasing A* or having your original data be a union in the first place. It seems however one can use `.` when using pointers, which is cool, though there seem to be some caveats: https://forum.dlang.org/post/hthxvxxsxdpkvwcwg...@forum.dlang.org (note this is 2014...))

For anyone more experienced with C, I'm not well known with references but are those semantically similar to the idea of using a type at a predefined location?

Small sidenote, this would be cool:
```d
int* ip = cast(int*)other_pointer;
int a = #a; // like a dereference but without allocating space for a elsewhere.
int b = #a; // Or something along those lines
a = 1;
b += 1;
assert(a==2);
```

Reply via email to