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);
```