C语言的数组

定义数组

int arr[3] ;//定义数组
arr[0] = 1;//进行赋值
arr[1] = 2;
arr[2] = 3;

当定义数组之后,arr就为一个常量,代表数组的地址,就是&arr[0]的地址

int arr[3] = {1,2,3};//定义数组
    int b = arr;
    int c = &arr[0];
    printf("b === %d\n",b);
    printf("c === %d\n",c);

打印结果:

b === -272632276
c === -272632276

可以看出结果是一样的。

 

C语言对数组越界是不做处理的,例如

    int arr[3] = {1,2,3};//定义数组
    int a = &arr[0];
    int b = &arr[1];
    int c = &arr[2];
    int d = &arr[3];
    
    printf("a == %d\n",a);
    printf("b == %d\n",b);
    printf("c == %d\n",c);
    printf("d == %d\n",d);

打印结果:

a == -272632276
b == -272632272
c == -272632268
d == -272632264

从结果可以看出c并没有进行处理,arr[3]已经超出了数组的长度,但还是打印出了arr[3]的地址

 

posted on 2018-05-29 09:26  Left-knife  阅读(456)  评论(0编辑  收藏  举报

导航