Types of ScriptPubKey that can contain addresses
Technically, pay-to-pubkey doesn't have an address type. You can derive an address as if it were a pay-to-pubkeyhash scriptPubKey, but there is a subtle difference. 

The other type you are forgetting is a pay-to-scripthash type. It's of the format 

OP_HASH160 &lt;Hash160(redeemScript)&gt; OP_EQUAL

Then, you get a p2sh adddress by prepending the version byte and appending the checksum to &lt;Hash160(redeemScript)&gt;