In addition to @poke's answer: Yes, this is possible.
However, depending on how disciplined C is, a typical requirement in a code review scenario would be to restrict access to the master branch to S. Usually, you would
- either trust C to push all changes into feature branches and use pull requests (although he could push directly into the master branch, bypassing code review), or
- use ACLs of some kind to programatically prevent access to the master branch, and grant only S the privilege to merge pull requests into this branch.
On GitHub, when you have write access to a repository, you have access to all branches, so you'd have to trust C to actually use pull requests (this has actually been discussed in other questions). Other Git hosting software does provide this kind of branch-level ACLs (I know of BitBucket, and if memory serves also Gitlab).