一道笔试题 (有正确讲解答案马上结贴)

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:17:55
short array[4]={1,2,4,8},*p,*q;
p=array;
q=&array[4];
printf( "%d,%d\n ",(int)(q-p),(int)q-(int)p);
不明白为什么是4和8

这个是C语言的问题

p和q是short类型的指针,p代表array的首地址,array的长度是4,q代表array数组所有元素紧接着首地址

p-q差4个short的长度,而每个short的长度是2个字节,所以地址p和地址q之间相差就是8个字节