&a+1 与 &a[0]+1

  • Post author:
  • Post category:其他


对于数组a[],数组首地址是&a,数组首元素地址是&a[0],这两者数值上相等,但是在进行地址加减时,表示的意义不同:

  • 数组名可以认为是一个

    指针

    ,它指向数组的第 0 个元素。在C语言中,我们将第 0 个元素的地址称为数组的首地址。数组名的本意表示整个数组,也就是表示多份数据的集合,但

    在使用过程中经常会转换为指向数组第 0 个元素的指针,所以上面使用了“认为”一词,表示数组名和数组首地址并不总是等价

  • &a+1,其中”1″的大小指的是整个数组的所占大小,例如数组a[4],&a +1实际上是 a[5],就是跳过一个数组
  • 而&a[0]+1,其中的”1″的大小指的是一个元素所占大小,例如数组a[4],&a[0] +1实际上是 a[1]
#include <stdio.h>

int main(){
    int arr[] = { 99, 15, 100, 888, 252 };
    int len = sizeof(arr) / sizeof(int);  //求数组长度
    int i;
    for(i=0; i<len; i++){
        printf("%d  ", *(arr+i) );  //*(arr+i)等价于arr[i]
    }
    printf("\n");
    return 0;
}



版权声明:本文为weixin_40721097原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。