Can someone please help me understand the code in bold below?
I can't understand what it's doing...

Code:
 
#include <ctype.h>
#include <stdio.h>

int getch(void);
void ungetch(int);

/* getint: get next integer from input into *pn */
int getint(int *pn)
{
    int c, sign;
        
    while (isspace(c = getch()));/* skip white space */
            
    if (!isdigit(c) && c != EOF && c != '+' && c != '-') {
        ungetch(c);  /* it's not a number */
        return 0;
    }
    sign = (c == '-') ? -1 : 1;
    if (c == '+' || c == '-')
        c = getch();
     for (*pn = 0; isdigit(c); c = getch())
        *pn = 10 * *pn + (c - '0');   // This is what I don't get...
    *pn *= sign;
 

    if (c != EOF)
        ungetch(c);
    return c;
}