美文网首页
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