Что происходит в этой программе? Нужен точный ответ, спасибо заранее. Язык СИ

int MasSize;
        printf("Введите размерность массива строк: \n");
        scanf_s("%d", &MasSize);
        char *pStrArray = (char*)calloc(MasSize, sizeof(char) * 20);
        printf("\nВведите последовательно строки массива строк [%d] размером не более 20 символов: \n", MasSize);
        for (int i = 0; i < MasSize; i++) {
            char Buf[80] = "";
            scanf("%s", Buf);
            if (strlen(Buf) > 20) {
                printf("Введенная строка превышает размер 20 (%d): \n", strlen(Buf));
                i--;
            }
            else {
                strcpy(&pStrArray[i * 20], Buf);
            };
        }

Так а что именно непонятно?
Код как раз и описывает это вполне точно.
Если непонятно что делает какая-то функция (strcpy, …), то надо смотреть документацию.

Мне не совсем понятно, что делает эта строка. Можете объяснить? Нужен точный ответ.

Ну так он в документации. strcpy - C++ Reference

&pStrArray[i * 20] это указатель на элемент массива.