Solaris 动态跟踪指南

字符串赋值

char * 变量的赋值不同,字符串按值而不是按引用复制。字符串赋值使用 = 运算符进行,从源操作数中复制实际的字符串字节,直到包含变量左侧的空字节为止,该变量必须属于 string 类型。可以通过对变量分配 string 类型的表达式,来新建 string 类型的变量。例如,以下 D 语句:

s = "hello";

将新建一个 string 类型的变量 s,并将六个字节的字符串 "hello" 复制到该变量中(五个可列显字符和一个空字节)。字符串赋值与 C 库函数 strcpy(3C) 类似,不同之处在于,如果源字符串超出目标字符串的存储空间限制,则结果字符串将自动按此限制截断。

也可以为字符串变量分配与字符串类型兼容的表达式。在此情况下,D 编译器将自动提升源表达式为字符串类型,然后执行字符串赋值。D 编译器允许将 char * 类型或 char[n] 类型(即,任意大小的 char 类型的标量数组)的任意表达式提升为 string 类型。