The "toupper" function is expecting a single character: int toupper ( int c );
http://www.cplusplus.com/reference/cctype/toupper/
And will return an integer; integers and characters are interchangeable:
'A' == 65;
'a' == 97;
http://www.asciitable.com/
Since you've initialized a c style string of size 4:
We can operate on its characters using indexes [0], [1], [2], [3], [4].
If you've entered "qt" for example, 'q' would be at index [0], and 't' would be at index [1].
Starting explanation of the for-loop:
Our use of the "for loop" is to iterate through the entire array of characters and attempt to initialize each character.
In the "for loop", we've declared an integer of "i" and assigned it a value of 0. We then compare it to our limit: the string length of our character array; the valid characters in the array. The last argument is applied after the embedded procedures; which is our increment counter.
In the loop, we would get the value in the array at index "i". Apply the value to the toupper function. And insert the returning value into our character array at index "i"; erasing its lowercase value!
Ending explanation of the for-loop.
As for the unsigned it: it simply ensures the integer variable is a positive number; regular int would work as well.