Не могу понять как работает указатель в коде на C++

Вот код программы, которая суммирует элементы строк матрицы и находит среди них максимальную сумму. Не могу понять, как работает указатель в данном случае.

Сначала мы создаем указатель int *P. Затем присваиваем ему адрес элемента матрицы a[0][0]. Затем, когда суммируем элементы, мы разыменовываем указатель s += *P. А вот что значит в конце цикла P++?

#include<iostream>

int main() {

int a[3][5], i, j, s, max, *P;
printf("input A[3][5]");
printf("\n");
for (i = 0; i < 3; i++) {
    for (j = 0; j < 5; j++) {
        scanf("%d", &a[i][j]);
    }
}
P = &a[0][0]; 
printf("Array A:\n");
for (i = 0; i < 3; i++) {
    s = 0;
    for (j = 0; j < 5; j++) {
        printf("%5d", a[i][j]);
        s += *P;
        P++;
    }
    printf("\n");
    if (i == 0) max = s;
    else if (max < s) max = s;
}
printf("str max = %d", max);
}

Ответы (1 шт):

Автор решения: mAlware_w0lf

Если мне не изменяет память, то в данном случае происходит переход адреса на 4 байта (размер типа данных, который присвоен как массиву, так и указателю), на который указывает, собственно, указатель

→ Ссылка