C语言 一维数组

一维数组的存储

一维数组在内存中是一段连续的存储区域 。

格局如下:

验证代码如下:

#include <stdio.h>

int main()
{
    int arr[10] = {0};
    for(int  i =0 ; i< sizeof(arr)/sizeof(arr[0]);i++)
    {
        printf("&arr[%d] = %p\n",i,&arr[i]);
    }
    return 0;
}

数组三要素

数组的声明中,己经把数组访问的三要素,均己表示出来了,三要素就是, 起始位置,移步刻度,终止位置(范围)。

比如 int arr[10];  //这里 int 是 步长,4个字节一步长 ;arr是起始地址 ; [10] 是范围

PS:

所有学习过 C 语言的人,可能都会有一个疑问,数组的下标为什么从零开始。
因为 C 语言,脱胎于汇编语言,稍微懂点汇编的人, 就知道 [ ] 是一种基址变址运算符。基于起始位置偏移 0 个单位处,开始存放数据,故下标从 0 处开始。

这里我们可以看下面这个例子

#include<stdio.h>
int main()
{
    int arr[10] = {0,1,2,3,4,5};

    printf("%p   %p\n",&arr[0],arr);//两者结果相同
    //arr有两重意思,1.代表构造类型;2.代表首元素的地址

    printf("%d  %d\n",arr[1],1[arr]);  //[ ]下标运算符,结果都相同
    //这里本质前者arr的地址偏移一个单位,后者 1的单位地址偏移arr个单位

    return 0;
}


 

猜你喜欢

转载自blog.csdn.net/weixin_42513339/article/details/87900768