/
driver3.2@242/autoconf/
driver3.2@242/doc/LPC/
driver3.2@242/hosts/
driver3.2@242/hosts/amiga/NetIncl/
driver3.2@242/hosts/amiga/NetIncl/netinet/
driver3.2@242/hosts/amiga/NetIncl/sys/
driver3.2@242/hosts/atari/
driver3.2@242/hosts/fcrypt/
driver3.2@242/mudlib/
driver3.2@242/mudlib/sys/
driver3.2@242/util/
driver3.2@242/util/indent/hosts/next/
driver3.2@242/util/make_docs/
Call by reference can be used to have a function that passes more than one
value to the caller, without using arrays that have to be unpacked
thereinafter.
There is nothing special to declare in the calling function, you simply
do an assignment to a parameter of the function.
The caller to pass references explicitely; this is done by prefixing an
lvalue with '&' .
To pass a reference to an element of an array, you have to enclose the
indexed lvalue in round brackets.

Example:

void assign(mixed destination, mixed source) {
    destination = source;
}

void extract_number(int destination, string source) {
    sscanf(source, "%d", destination);
}

void test() {
    int i;
    float f;
    mixed *a;

    extract_number(&i, "42 palantirs");
    assign(&f, 3.141592653589793);
    assign(&a, ({ i, f }));
    assign(&(a[<0..<1]), ({1,2,3,"sink","x","y","x"}));
    assign(&(a[5][0]), 'w');
    assign(&(a[5][<1]), 'g');
    printf("%O", a));
}

({ /* sizeof() == 9 */
  42,
  3.14159,
  1,
  2,
  3,
  "wing",
  "x",
  "y",
  "x"
})