Guia de rastreamento dinâmico Solaris

Atribuição de seqüências

Ao contrário da atribuição de variáveis char *, as seqüências são copiadas por valor, não por referência. A atribuição de seqüências é realizada por meio do operador = e copia os bytes reais da seqüência do operando de origem, incluindo o byte nulo, para a variável do lado esquerdo, que deve ser do tipo string. Você pode criar uma nova variável do tipo string atribuindo-a a uma expressão do tipo string. Por exemplo, a declaração de D:

s = "hello";

criaria uma nova variável s do tipo string e copiaria os 4 bytes da seqüência "olá" para ela (3 caracteres imprimíveis mais o byte nulo). A atribuição de seqüências é análoga à função de biblioteca de C strcpy(3C), exceto que se a seqüência de origem exceder o limite do armazenamento da seqüência de destino, a seqüência resultante será truncada automaticamente nesse limite.

Você também pode atribuir a uma variável de seqüência uma expressão de um tipo que seja compatível com seqüências. Neste caso, o compilador de D promove automaticamente a expressão de origem para o tipo string e realiza uma atribuição de seqüências. O compilador de D permite que qualquer expressão do tipo char * ou do tipo char[n] (ou seja, uma matriz escalar de char de qualquer tamanho), seja promovida para string.