string literals
Simen Kjaeraas
simen.kjaras at gmail.com
Sat Jan 26 11:17:13 PST 2008
Saaa <empty at needmail.com> wrote:
> I finally see what a string literal means, but this code still bothers
> me.
> What does changing a dynamic char[] (str) have to do with the string
> literal
> in str1
>
>>> from the 1.0 documentation:
>>>
>>> char[] str;
>>> char[] str1 = "abc";
>>> str[0] = 'b'; // error, "abc" is read only, may crash
>>>
>>> Is this example correct?
>>>
>>>
>>
>> Yes, because the "abc" is a string literal, that is to say it's written
>> in
>> the code itself. If str1 was loaded from an outside source, such as a
>> file, user input, etc., then you could modify it without issue.
>>
>> For string LITERALS (a string literal is one you write in the code
>> itself,
>> usually encased in double-quotes), modifying them without calling .dup
>> on
>> them is bad. For other strings, it's perfectly okay.
>
>
You're right, of course. str[0] has nothing to do with "abc" or str1. The
code will fail, but with an arraybounds error (str.length == 0, so no
element 0 is available)
Now, this code:
char[] str1 = "abc";
str1[0] = 'b'; // error, "abc" is read only, may crash
Should fail for the above reasons.
Simen Kjaeraas
More information about the Digitalmars-d-learn
mailing list