关于C数组指针的一道面试题

来源:互联网 发布:同花顺股票数据接口 编辑:程序博客网 时间:2024/04/28 11:32

本文由 @lonelyrains 出品,转载请注明出处。 
文章链接: http://blog.csdn.net/lonelyrains/article/details/49333971



C语言指针是经典问题了,还是做错啊~


int main(){int a[4] = {1,2,3,4};int *p = (int*)(&a+1); // a数组的地址加1,是以a数组的大小为一个单位char *pc1 = (char *)(&a+1);  // 同上,只是pc1变成了字符指针,下次pc1加减运算是一个字节大小为一个单位char *pc2 = (char *)(reinterpret_cast<char*>(&a)+1); // a的<span style="font-family: Arial, Helvetica, sans-serif;">加减运算是一个字节大小为一个单位,得到的pc2也是一个字节大小单位</span>char *pc3 = (char *)((char*)(&a)+1); //同上//printf("%08x,%08x,%08x,%08x,%08x\r\n",a,p,pc1,pc2,pc3);printf("%d,%d,%d,%d,%d",*(a+1),*(p-1),*(pc1-1),*(pc2-1),*(pc3-1));    return 0;}
针对上述代码,小端机的输出为2,4,0,1,1。               其中大小端只对第pc1的运算结果有影响



0 0
原创粉丝点击