zoukankan      html  css  js  c++  java
  • a+1、&a+1、*(a+1)、*(&a+1)、*(*(&a+1))的区别

    #include<stdio.h>
    int main()

    {                                                                                           
    int a[3] = { 1,2,3 };                                        
    printf("%d ", a);
    printf("%d ", &a);
    printf("%d ", a+1);
    printf("%d ", &a+1);
    printf("%d ", *(a+1));
    printf("%d ", *(*(&a + 1)));
    printf("%d ", *(*(&a + 1)-1));

    }                     

     a是数组首地址

    &a是数组首元素的地址.

    a+1:就是数组首地址加上一个元素所占的地址大小,这里int是4个字节,所以加上1x4.

    &a+1:代表的是加上整个数组的大小,这里数组尺寸是3,所以+1代表的是地址加上3x4.

    *(a+1):代表的是数组第二个元素的值!不再是元素的地址

    *(&a+1):代表&a+1地址的值

    *(*(&a + 1)-1):&a+1地址的前一个元素的地址,这个地址中的元素的值取出来!

    下面这个图可以帮助理解这个问题:

    图来源:https://blog.csdn.net/eastmoon502136/article/details/8630790

  • 相关阅读:
    快速幂模板
    ACM大一寒假集训week1.2
    ACM大一寒假集训week1.1
    Gym
    Gym
    大学ACM第八周心得
    大学ACM第六周心得(11.29)
    大学ACM第五周心得
    大学ACM第四周心得
    大学ACM第三周心得
  • 原文地址:https://www.cnblogs.com/phs007/p/11550614.html
Copyright © 2011-2022 走看看