2015-01-15 4 views
-2
char* mystrcpy(char* dest, const char* src) 
{ 
    int i; 

    for (i = 0; i < mystrlen2(src); i++) dest[i] = src[i]; 
    dest[i] = '\0'; 
    return dest; 
} 
+4

Я не могу ответить на этот вопрос, потому что я не знаю, почему вы думаете, что * не будете использовать указатели в этой функции. Не могли бы вы рассказать нам, что вы ожидали от этого, а также немного рассказать о том, почему это удивляет вас тем, что здесь участвуют указатели? – zwol

+0

Вы спрашиваете, почему тип возврата является 'char *' или почему синтаксис является 'char * mystrcpy'? –

ответ

4

Строки реализованы в C как массивы символов и доступны через указатель на первый элемент массива. Символы char в этой функции являются такими указателями.

+2

Правильный ответ, который позволяет избежать множества ошибочных представлений о указателях, массивах и строках. –

+0

Спасибо за ваши ответы. Теперь я понимаю. –

+0

@TomekM прошу «принять» ответ Кэтрин, если он вам поможет. –

1

функции часто пишутся так, что аргумент, передаваемый в функцию, возвращается в качестве значения, для удобства, чтобы позволить более свободно код вызова, например

printf("%s", mystrcpy(target, source)); 

Другой пример функции, возвращающей аргумент назначения is

char *strcat(char *strDestination, const char *strSource); 
Смежные вопросы