expected array behaviour

Jarrett Billingsley jarrett.billingsley at gmail.com
Thu Jan 1 16:03:30 PST 2009


On Thu, Jan 1, 2009 at 6:56 PM, Mike James <foo at bar.com> wrote:
> Hi John,
>
> I am using D1.038, dsss and Tango.
>
> I've written a quick example but this one is even stranger...
>
> ========================================
>
> module main;
>
> import tango.io.Stdout;
>
> int main() {
>    func1();
>    func2();
>
>    return 0;
> }
>
> void func1() {
>    char[] array1 = "ABCD";
>    char[] array2 = "ABCD";
>
>    Stdout(array1).newline;
>    Stdout(array2).newline;
>    Stdout.newline;
>
>    array2[0] = 'Z';
>
>    Stdout(array1).newline;
>    Stdout(array2).newline;
>    Stdout.newline;
> }
>
> void func2() {
>    char[4] array1 = "ABCD";
>    char[4] array2 = "ABCD";
>
>    Stdout(array1).newline;
>    Stdout(array2).newline;
>    Stdout.newline;
>
>    array2[1] = 'Q';
>
>    Stdout(array1).newline;
>    Stdout(array2).newline;
>    Stdout.newline;
> }
>
> ========================================
>
> Regards,
>
> -=mike=-
>

If you want to modify the contents of string literals, like you're
doing here, put a .dup on them.

char[] array1 = "ABCD".dup;

Again, modifying the contents of string literals is illegal and the
results are undefined.


More information about the Digitalmars-d-learn mailing list