C++ 数组

数组的定义

数组将多个类型相同的对象归纳在一起,连续存放。
数组实际上只是一个指针

数组的存储

数组是连续存储的,当声明数组时,就已经为数组分配了内存。会根据类型的大小分配内存

数据的创建与访问

一维数组

  1. type name [n];// 在分配内存,n要为常量,变量不行
    超出作用域就会销毁
int main(){
	static const int x=5;// x为常量
	int example[x];// x必须为常量
	example[0]=1;
	*(example+1)=2;// example[1]=2 ,实际运算为 数组的地址+(偏移,类型的大小)*i
	// 但由于example为整型指针,会自动乘以偏移
	int* ptr=example;//OK,数组是个指针
	*(ptr+2)=3;// example[2]=3,ptr为整型指针,会自动乘以int的偏移
	*(int*)((char*)ptr+4*3)=4// example[3]=4 
}
  1. type* name=new type [n]; // 利用new,堆分配内存。n可以为变量
    程序结束,才会销毁。若函数想要返回一个数组,要使用new创建

二维数组

  1. 静态:
int value[10][10];// 未初始化
int value[10][10]={{1,2},{2}};//value[0][0,1]与value[1][0]被赋值,其他为0 
  1. 动态
方式1int (*value)[n]=new int [m][n];// 相当于 n个*value
delete []value;
方式2int** value=new int* [m];
for(int i=0;i<m;i++)
	value[i]=new int [n];
方式3int* value=new int [3][4];// 按行存储

动态

数组的大小

一般是利用 sizeof(a)吗,而要使用这种方法,必须在栈中分配内存
注意:若使用new与指针创建数组,则只会返回指针的大小,而不是数组的大小

int main(){
	int ex1[5];
	int* ex2=new int [5];
	sizeof(ex1)/sizeof(int);// 5
	sizeof(ex2)/sizeof(int);// 1
}

数组的初始化

内置数据类型

静态数组:
int num[100];// 只是声明,没有初始化,
int num[100]={};//已经初始化,全部为0
int num[100]={1};// num[0]=1,其他为0
动态数组:
int* num=new int [100];// 未被初始化
int* num=new int [100]();// 初始化,都为0

类数组

动态数组:
都会自动调用默认构造函数
string* str=new string [10];
string* str=new string [10]();

Array数组

#include <array>
int main(){
	std::array<int,5> example;// int example[5]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值