美文网首页
arr 与&arr区别

arr 与&arr区别

作者: 贰shu | 来源:发表于2017-03-23 21:38 被阅读0次
        int arr[5] = {1,2,3,4,5};
        int *ptr = (int *)(&arr+1);
        int result1 = *(arr+1);
        int result2 = *(ptr-1);
        printf("%d,%d\n",result1,result2); // 结果为2,5
        printf("%p\n%p\n",arr+1, &arr+1);

为何result2的结果为5呢?

问题的关键在于 int *ptr = (int *)(&arr+1);这一行代码,arr得到的是数组第一个元素的首地址,与&arr[0] 一样,但是&arr指向的是一个包含五个int型元素的数组首地址.

arr+1偏移量为sizeof(int)*1;

&arr+1偏移量为sizeof(int)*5;

相关文章

网友评论

      本文标题:arr 与&arr区别

      本文链接:https://www.haomeiwen.com/subject/ajntottx.html