#include <iostream>
#include <array>
//数组:指针是数组工作方式的基础,数组是元素的集合
class Entity
{
public:
//通常的定义:
static const int size=5;
int ex[size];
//获得数组大小:这个方法更安全
std::array<int, 5>another;//another.size()获得大小,或者直接用size
//int ex[5];
//int* ex=new int[5];
Entity()
{
int a[5];
// sizeof(a);//数组占用了多少字节 4*5
int count= sizeof(a)/ sizeof(int);//元素数量
for(int i=0;i<another.size();i++)
ex[i]=2;
}
};
int main()
{
Entity e; //在栈创建的数组,可以在内存视图直接看见值,如果用new,则需要跳跃,也就是间接寻址,影响性能
//数组的定义
int examlple[5];
//index从0开始 赋值
// examlple[0]=1;
// examlple[4]=5;
for(int i=0;i<5;i++)
examlple[i]=2;
//用new的好处在于,生存期在delete前,都存在,而普通的括号完了就结束了
int* another=new int[5];//new 堆创建need 删除
for(int i=0;i<5;i++)
another[i]=2;
delete []another;
int* ptr=examlple;
//赋值第三号元素,用指针的方式,一个int四个字节,从第一个到第三个,有两个,因此+2
examlple[2]=5;
*(ptr+2)=6;//计算:类型的字节数*偏移量,eg此处:2*4=8字节
*(int*)((char*)ptr+8)=7;//直接用一个字节的形式处理
//比较:涉及到了性能方面,如果多一个等于,会多做一步,比较是否等于
for(int i=0;i<5;i++)
{
std::cout<<examlple[i]<<std::endl;
}
// //打印元素
// std::cout<<examlple[0]<<std::endl;
// //打印地址
// std::cout<<examlple<<std::endl;
std::cin.get();
}
C++:数组的底层指针的基础运算以及数组的大小和定义
最新推荐文章于 2024-08-03 18:36:56 发布