好久没发东东了, 今天去了腾讯面试了,估计过不了,图像处理的知识基本不起任何作用。
下面关于一条腾讯的面试题。
int a[]={10,20,30,40,50};
short *p,*q;
p=(short*)(a+1);
q=(short*)a;
cout<<a[p-q]<<endl;
问输出的是什么 ?
晕掉~.~
调试结果发现
0012FF68 (p的地址)
0012FF64 (q的地址)
a[p-q]=30
p - q应该是4吧怎么会是 2呢,想不通。
最后在同学的提醒下终于知道原因了:
原来 p - q并不是地址间的直接相减,而是看你在两个地址间跨越了多少个元素。所以结果为p-q应为(p的地址-q的地址)/sizeof(type)。