一维数组(基础内容)

简单总结了一维数组的基础知识点,仅供初学者参考,如有错误请指出,感谢
一、array数组

1.定义

(数组:一组相同类型元素的集合)

(数组元素:构成数组的基本单元。数组中各数据元素的排列是有一定规律的,

   下标代表数据在数组中的序号。用一个数组名和下标唯一确定 数组中的元素。

定义:数据类型 数组名[元素个数];

--->数组名表示内存首地址,是地址常量

--->编译时在内存中存放在地址连续的存储单元

--->下标(索引号)是从0开始的

--->必须有数量,直接写或者依次初始化写定数量

type name[(数量)]={具体数值,,,};

合法的数组(举例,有多种声明方式,有可省略部分)

int arr1[]={1,3,4};
int arr2[5]{1,2,3,3,4};
int arr3[23];

注:为防止越界,通常令数组的数量较大于范围 

补充:

a.下标取值范围内, 0~(元素个数-1),使用数组时下标不能越界

b.数组元素只能逐个引用,不能一次引用整个数组

2.初始化 

不初始化 ,元素是随机的

-(1)只读数组,需用const声明数组并 初始化数组值
const int days[month]={31,28,31,30,31,30,31,31,30,31,30,31};
-(2)常量数组可依次初始化
int a[]={1,2,2,3,3,4};
--也可一起初始化为一个值
int b[6]={0;}
---也可单个初始化(指定初始化容器)(C99新增)
int c[6]={[5]=21};

-(3)变量数组无法用常规方法初始化
可用#include<cstring> memset(变量,初始化的值,sizeof(变量));(理论上只能清零)

必须确定n(即输入n),才能定义一个能存n个整型数据名称为arr的变长数组

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    int n=0;
    cin>>n;
    int arr[n];
    memset(arr,0,sizeof(arr));
    printf("%d",arr[0]);
    return 0;
}

如果试图初始化化为其他数值,则会随机给数

 

3.常用操作
(1)输入输出

简单的建议使用规则要求较少的cin,cout

要求多或者运行量过大为防止超时最好使用scanf,printf

#include<iostream>
using namespace std;
int main()
{
    int arr[10]={0};
    int brr[10]={0};
    cin>>arr[0];//输入方法一
    scanf("%d",&brr[9]);//输入方法二
    printf("%d\n",arr[0]);//输出方法一
    cout<<brr[0];//输出方法二
    return 0;
}

注:

--->直接cin>>name ;是不合法的,会报错

      应引用一维数组,即:数组名[下标]

---->scanf("%d",&name);默认输到索引号为的位置(不建议使用)

--->输出时也应标明索引号,否则会直接输出数组中首元素的地址

#include<iostream>
using namespace std;
int main()
{
    int arr[10]={0};
    int brr[10]={0};
    cin>>arr[0];//输入方法一
    scanf("%d",&brr[9]);//输入方法二
    printf("%d\n",arr[0]);//输出方法一
    cout<<brr;//输出方法二
    return 0;
}

结果

(虽然理论上计算语言是由二进制编码的 但由于如果全用二进制表示会浪费过多内存

   所以通常在计算机存储信息时用十六进制表示位置)(个人理解,有误请指正感谢)

(2)求内存字节数

sizeof(name);

#include<iostream>
using namespace std;
int main()
{
    int arr[10]={0};
    int len=sizeof(arr);
    cout<<len;
    return 0;
}

为什么时40,而不是10呢?

因为一个int整型占四个字节,而且sizeof求的时数组占字节数不是元素数;

(3)补充
#include<cstring>库里的操作

-复制数组:遍历或memcpy(acopy,a,sizeof(a);(了解即可)

-清空数组:memset(name,0,sizeof(name));

一维数组的基本内容大致如上,如有错误请及时指正,如有问题可即使发问,感谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值