简单总结了一维数组的基础知识点,仅供初学者参考,如有错误请指出,感谢
一、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));
一维数组的基本内容大致如上,如有错误请及时指正,如有问题可即使发问,感谢