Big confusions here.
Int 010h gives access to bios routines that will do things like change the screen mode. Changing the screen mode can be done without bios, but involves a lot of out instructions to the VGA electronics, which is horrendously difficult to get right, and totally hardware-specific, which is why you have the bios to do the job. You can even, if you try hard enough, destroy some screens by bad choices in fiddling with VGA. Bios is beyond the realms of any standard language because it is specific to the hardware of IBM-compatible PCs.
On top of that, DOS provides a higher-level (but still low-level) of control of graphics things through its own interrupts. This is still outside the realms of standard C as C extends beyond PCs running DOS!
According to which graphics or text mode you are using, the VGA's memory will start at B800 or A000. This is a consequence of the VGA's electronics, and is changed when bios does its magic. Merely writing something to A000 won't make a graphics pixel appear instead of text.
ANSI C has to work on any system, irrespective of hardware. The idea of ANSI C is to make code portable to any environment for which a C compiler is available. If you start pointing at bits of memory with specific functions (either screen data memory or pointers to specific interupts) then your code is no longer portable, and you might just as well make use of the facilities your specific environment makes available. In fact, direct references to addresses holding interupt target addresses are going to make your code less portable and harder to understand than merely calling the interupt the way it is supposed to be called, by an int instruction. ANSI C can't do that, because there's no guarantee the system actually has interrupts, but almost any C compiler ought to give you extra features to allow this sort of thing on the system for which the compiler was designed.