32-bits

Can a C compiler generate a 64-bit executable where pointers are 32-bits?

Most programs fit well in address space of less than 4GB, but in some cases the program may need to use the new processor fea ... bit features, while maintaining 32-bit pointers? I know this is only advantageous if this memory saving is really important.

What are the consequences of programming in 32-bit or 64-bit?

Would only memory capacity be limited to 4 GB in 32 bits? Do I need to have specific concerns? I know what's different about C, I want to know about C#.