TC学习记录之——指针,变量,数组,程序段地址、堆栈段地址与偏移的关系
#include<stdio.h>
int main(void)
{
long int bl=0x12345678;
int sz[2],*ls1,*ls2,*ls3,huge *main_add=main,far *sz_add=sz,far *bl_add=bl;
system("cls");
printf("&main=0x%x &sz_add=0x%x &bl_add=0x%x\n",&main,&sz_add,&bl_add);
ls1=&main_add;/*取得far main_add指针基地址,低位两字节为偏移量*/
ls2=&sz_add;
ls3=&bl_add;
printf("&main_add=0x%x &sz_add=0x%x bl_add=%x\n",&main_add,&sz_add,&bl_add);
printf("main_add_0x%x=ip=0x%x main_add_0x%x=cs=0x%x \nsz_add_0x%x=sp=0x%x sz_add_0x%x=ss=0x%x \nbl_add_0x%x=0x%x bl_add_0x%x=0x%x \n",ls1,*ls1,ls1+1,*(ls1+1),ls2,*ls2,ls2+1,*(ls2+1),ls3,*ls3,ls3+1,*(ls3+1));
/*ls+1——指针地址+1(注意在TC中,int指针地址是以2字节作为一个计算单位的)得到far main_add指针的高位字节,即可取得段地址*/
getch();
return 0;
}