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;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值