= Static vs dynamic arrays = ''Part of'' ArraysCategory == Description == Shows the use of static and dynamic arrays, when references are copied and duplication is needed. == Example == {{{ #!d import std.c.stdio; import std.string; int main(char[][] args) { int[] a = new int[4]; static int[4] a1 = [10, 20, 30, 40]; int[4] b, c; int[] d, e; // initialize the vector a with the values from a1 (i = 0..2, j = a1[0] .. a1[2]) foreach (int i, int j; a1) a[i] = j / 10; printf("a1[2] = %d\n", a1[2]); // copy the vector a1 in the vector b b[] = a1; printf("\tb[2] = %d\n", b[2]); // duplicate the vector a1 in the vector b (not needed for static arrays) c[] = a1.dup; printf("\tc[2] = %d\n", c[2]); printf("a[2] = %d\n", a[2]); // copy the vector a in the vector c (d is dynamic, so only the reference is copied) d = a[]; printf("\td[2] = %d\n", d[2]); // duplicate the vector a in the vector c (in this case it makes difference) e = a[].dup; printf("\te[2] = %d\n", e[2]); // now a1[2] is modified a1[2] = 0; printf("a1[2] = %d\n", a1[2]); // b is not modified printf("\tb[2] = %d\n", b[2]); // neither is c printf("\tc[2] = %d\n", c[2]); // now a[2] is modified a[2] = 0; printf("a[2] = %d\n", a[2]); // d IS modified, because it is just a reference printf("\td[2] = %d\n", d[2]); // e IS NOT modified, because it is a copy printf("\te[2] = %d\n", e[2]); return 0; } }}} == Source == || Link || http://www.dsource.org/tutorials/index.php?show_example=149 || || Posted by || Anonymous ||