Вы просто копируете начальный адрес str
в temp
.Это означает, что любые изменения в temp
будут отражены и в str
, поскольку они указывают на одну и ту же память.Он не эмулирует strcpy(dest, src)
, что создает отдельную копию строки с нулевым символом в конце, на которую указывает src
, начиная с ячейки памяти, на которую указывает dest
.
Итак, чтобы ответить на ваш вопрос как на вопрос: нет.
Если вы намерены избежать времени выполнения O (n), равного strcpy
, это также то, что вы не можете сделать на самом деле.
Если для выполнения программного задания, эквивалентного strcpy
, вам требуется программирующее задание или упражнение, вот высокоуровневое описание используемого им алгоритма:
- Скопируйте символ в
*source
to *destination
- Если только что скопированный символ был нулевым терминатором, выйдите из него.
- В противном случае увеличьте указатель до
source
и увеличьте указатель до destination
. - Перейти к шагу 1.