Como copiar uma string em C?


Ele não está modificando a string result porque result não é uma string, é uma variável e pode notar que em lugar algum essa variável é modificada.

Ele altera a variável p incrementando o ponteiro para ir andando caractere a caractere do objeto string. O mesmo acontece como ponteiro begin em sincronia.

Ele não altera result porque essa variável aponta para o início do objeto string. Quando terminar você quer retornar para o início do objeto e não para o fim, então não pode mexer nisso.

Você pode mudar do jeito que está pensando e ver o que acontece. Você retornará um valor que aponta para o terminador da string e por isso quando for usar não terá nada útil ali.

Essa função é suscetível a falhas se não usar de forma adequada, portanto pode não ser uma boa ideia usá-la.