On Wednesday, 5 June 2024 at 06:22:34 UTC, Eric P626 wrote:

I tried the following signatures with the ref keyword and it did not change anything:

~~~
void print_maze ( ref s_cell maze )
void print_maze ( ref s_cell [][] maze )
~~~

From what I found, arrays passed in parameters are always passed by reference. So the ref keyword seems pointless.


There is one useful functionality about the ref keyword when passing arrays, it is that you can change the original array reference to another array reference.

Ex.

```
void foo(ref int[] x)
{
    x = [1,2,3];
}

void bar(int[] y)
{
    y = [1,2,3];
}

void main()
{
    auto x = [0,0,0];
    auto y = [1,1,1];

    foo(x);
    bar(y);

    writeln(x);
    writeln(y);
}
```

The output of the program is:

```
[1, 2, 3]
[1, 1, 1]
```

Of course in your case this doesn't matter, but just wanted to point out that adding ref to array parameters actually pose a function.

Reply via email to