29.04.24 #1

Closed
opened 2024-05-02 20:20:46 +00:00 by gandc · 2 comments
Owner

Вместо индексации для перебора символов в строке пользоваться указателем char* и операциями инкремента/декремента

Вместо индексации для перебора символов в строке пользоваться указателем char* и операциями инкремента/декремента
Author
Owner

В функции Length() заменить индексацию массива str[length] на использование указателя *str и операцию инкремента str++, что позволяет перебирать символы в строке, перемещая указатель, вместо повторного вычисления смещения в массиве.

static int Length(const char* str)
{
    int length = 0;
    while (*str != '\0')
    {
        length++;
        str++;
    }
    return length;
}

В функции CopyString() заменить индексацию массивов на использование указателей *destination и *source, а также операции инкремента destination++ и source++, чтобы скопировать строку. Это позволяет избежать повторного вычисления смещения в массивах.

static void CopyString(char* destination, const char* source, int length)
{
    while (length--)
    {
        *destination++ = *source++;
    }
    *destination = '\0';
}

while (length--) в функции CopyString() одновременно уменьшает length и проверяет на ноль. Эта конструкция является сокращенной формой записи для while (length > 0) с последующим уменьшением length на 1. Когда length достигнет нуля, условие length-- станет ложным, и цикл завершится.

В функции Length() заменить индексацию массива str[length] на использование указателя *str и операцию инкремента str++, что позволяет перебирать символы в строке, перемещая указатель, вместо повторного вычисления смещения в массиве. ``` static int Length(const char* str) { int length = 0; while (*str != '\0') { length++; str++; } return length; } ``` В функции CopyString() заменить индексацию массивов на использование указателей *destination и *source, а также операции инкремента destination++ и source++, чтобы скопировать строку. Это позволяет избежать повторного вычисления смещения в массивах. ``` static void CopyString(char* destination, const char* source, int length) { while (length--) { *destination++ = *source++; } *destination = '\0'; } ``` _while (length--)_ в функции CopyString() одновременно уменьшает length и проверяет на ноль. Эта конструкция является сокращенной формой записи для while (length > 0) с последующим уменьшением length на 1. Когда length достигнет нуля, условие length-- станет ложным, и цикл завершится.
gandc closed this issue 2024-05-19 21:40:01 +00:00
gandc reopened this issue 2024-05-24 14:31:14 +00:00
Author
Owner
[Solved](https://git.gandc.ru/gandc/pr4/commit/1d3df752ff68341f9360cecb75d057dfce4a52c0)
gandc closed this issue 2024-05-24 14:46:58 +00:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gandc/pr4#1