In the Turbo C compiler, the size of an int pointer is shown as 2 bytes when sizeof() operator is used. Now, if I print the address of an int variable, it comes out to be a
Your program is compiled under the small memory model, meaning that your entire data space takes up no more than 64K of space. When the program starts, the DS register is pointed at that data space, so pointers only need to be 16 bits to reference any location in the data space.
In the medium and large memory models, the data space could be larger than 64K, and you'd find your pointers to be 32 bits.
Please see Alok's comments. See gcc for a replacement.