C语言-指针与16进制
①规则
16进制
1、2、3、4、5、6、7、8、9、
10用A表示、11用B表示、12用C表示、13用D表示、14用E表达、15用F表达、
16进位。
~
②例子
#include< studio.h>
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0},*p=a;
p=a;
/*p表示a[0]的地址194,而不是a[0]的值1*/
printf("%x\n",p);
/*%x表示16进制*/
printf("%x\n",p+9);
}
若1个int变量占2字节, 输出p=194,
则p+9=1A6
~
③计算过程
p为指向数组a首地址的指针,
p+9为指针向右移动9个存储空间,
每个存储空间为1个int变量(2字节),
即指针向右移动9×2=18个字节,
18转化为16进制,16+2转化为12,
即
9个存储空间→18个字节→12(16进制)
即
p=194
p+9=194+12=1(10)6=1A6
~
注意此处
p+9为指针移动9个物理地址,
而不是p+9=194+9=19(13)=19D