I'm confused as to what a line of code does in this program:

```
int *temp = new int [cap];
int num = 0;

for(int i = name; i < number; i++)
{
 *(temp + count) = *(foo + i);
 num++;
}

```

`name`, `number`, and `foo` are global variables (`foo` being a pointer),
and `cap` is an argument.

Specifically, I don't understand this line: 

```
 *(temp + count) = *(foo + i);

```

Why are there pointers to the parentheses, and what will this do?