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