On Thursday, 27 October 2016 at 16:13:34 UTC, David wrote:
Hi

The pointer (.ptr) of an array is the address of the first array element. But what exactly is the address of the array? And how is it used?

  auto myArray = [5, 10, 15, 20, 25, 30, 35];
writeln("myArray.ptr: ", myArray.ptr); // myArray.ptr: 7FFA95F29000 writeln("&myArray[0]: ", &myArray[0]); // &myArray[0]: 7FFA95F29000
  writeln("&myArray: ", &myArray); // &myArray: 7FFE4B576B10
writeln("*&myArray: ", *&myArray); // *&myArray: [5, 10, 15, 20, 25, 30, 35]

Sorry that went to quickly ;-)

I observe for example that the even if the pointer is moved to another address the address of the (dynamic) array stays constant:

  auto shrink = myArray[0 .. $-1];
  writeln("shrink.ptr: ", shrink.ptr);
  writeln("&shrink: ", &shrink);

Note: myArray and shrink have the same ptr but a different address

  shrink ~= 100;
  writeln("shrink.ptr: ", shrink.ptr);
  writeln("&shrink: ", &shrink);

Note: After appending, shrink changes its ptr but its address stays the same.

Thanks for your help in advance.

Reply via email to