现在的位置: 首页 > 综合 > 正文

NokiaSimens的一道笔试题

2013年08月09日 ⁄ 综合 ⁄ 共 222字 ⁄ 字号 评论关闭

#include

void main()
{
    int a[] = { 0, 1, 2, 3, 4, 5 };
    int *ptr = (int*)(&a+1);
    printf("%d/n", *(ptr-1));
}

值为5。

分析:

a本来就是数组的首地址,这时再取地址,这时意思就不一样了,a,&a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5].

抱歉!评论已关闭.