langref: emphasize the use of dereferencing string literals

This commit is contained in:
expikr 2023-11-21 19:54:13 +08:00 committed by GitHub
parent 15a6b27957
commit 27353bb936
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -899,9 +899,18 @@ pub fn main() void {
The type of string literals encodes both the length, and the fact that they are null-terminated, The type of string literals encodes both the length, and the fact that they are null-terminated,
and thus they can be {#link|coerced|Type Coercion#} to both {#link|Slices#} and and thus they can be {#link|coerced|Type Coercion#} to both {#link|Slices#} and
{#link|Null-Terminated Pointers|Sentinel-Terminated Pointers#}. {#link|Null-Terminated Pointers|Sentinel-Terminated Pointers#}.
Dereferencing string literals converts them to {#link|Arrays#}.
</p> </p>
<p> <p>
Dereferencing string literals converts them to {#link|Arrays#}, allowing you to initialize a buffer with the contents of a string literal.
</p>
{#code_begin|syntax|mutable_string_buffer#}
test {
var buffer = [_]u8{0}**256;
const home_dir = "C:/Users/root";
buffer[0..home_dir.len].* = home_dir.*;
}
{#code_end#}
<p>
The encoding of a string in Zig is de-facto assumed to be UTF-8. The encoding of a string in Zig is de-facto assumed to be UTF-8.
Because Zig source code is {#link|UTF-8 encoded|Source Encoding#}, any non-ASCII bytes appearing within a string literal Because Zig source code is {#link|UTF-8 encoded|Source Encoding#}, any non-ASCII bytes appearing within a string literal
in source code carry their UTF-8 meaning into the content of the string in the Zig program; in source code carry their UTF-8 meaning into the content of the string in the Zig program;