31数组ZSBD

31数组定义

定义

  • 指针是C++数组工作的基础
  • 数组是元素的集合,按特定顺序排列的一堆东西,表示一堆变量组成的集合。
  • 一般是一行相同类型的变量
  • 数组一般和for循环放在一起,通过索引index来遍历。设置数组的每一个值
  • 数组是连续的数据块,可以像索引一本书一样的索引他们

数据类型

Int :允许在给定范围内存储一个整形数字。
int(integer)是4个字节(byte)大小的数据类型 -2b to 2billon
signed int 带符号整数,有正负,符号占一个

  • 一个字节byte是8比特(bit)的数据 4个byte is 32 bits的数据
  • signed int 带符号 符号占一个bit 剩下31个bit位置留给实际数字 。每个bit可以是 0或者1 (a bit can either be zero or one) 1bit的数据有两种可能的值
  • 有31个bit,每个bit2种可能的值, 2的31次方是2,147,483,648 “0”要单独储存 所以在int里面可以储存的最大数字是2,147,483,647 符号一变就是-2,147,483,647 有一个bit用来计算符号
  • Unsigned int 有32bit ,总是正的 2的32次方是4,294,967,296 所以 unsigned int最大储存数字为 4,294,967,295 说明:4,294,967,296打印出来就是0 4,294,967,297打印出来是1,感觉开始重复从0开始。

代码说明

#include <iostream>
 int main()
{
       int example[5];//definition  并分配空间
       int* ptr = example;
       //set and access
       for(int i=0;i<5;i++)
       {
              example[i] =i+ 1;  //index
              std::cout << example[i] << std::endl;
       }
       std::cout <<"占内存大小为"<<sizeof( example )<< std::endl;//直接打印,指针类型,打印出内存地址 debug这个输入example可以看到他本事的地址
       std::cout << example << std::endl;//直接打印,指针类型,打印出内存地址 debug这个输入example可以看到他本事的地址
       //用example[i]访问特定索引时候,其实是对example指针所在的内存取了一个偏移量 eg
       example[2] = 19950924;
       std::cout << example[2] << std::endl;
       //example[2] = 19950924;等同于下面指针算数ptr+2、这里的+2并不是指字节 指的是字节偏移量,取决于数组类型。int类型就是 偏移 2x4=8个字节  1byte=8bits  4byte=32bits
       *(ptr + 2) = 4295991;//*解引用,便可以赋值了
       std::cout <<"数组的值被指针运算重写为"<< example[2] << std::endl;
       //如果用字节处理上述的赋值过程
       //首先将ptr指针转换为一个字节的类型  (char*) ptr  ,再加8个字节
       //想写入的是一个四个字节的整数 ,把类型转换为int指针类型  这部分涉及到了类型转换
       *(int *)((char*) ptr + 8) = 748100;
       //上述写的就是索引的本质,数组的原理
       std::cout << "数组的值被指针运算重写为" << example[2] << std::endl;
       std::cin.get();
       
}

在heap上面添加数组 ,此种数组大小不可测

void heapArrays()//在堆上创建数组
{
       //int 类型指针数组another。
       //在堆上创建,和栈上面生存周期不同  。栈上面生存周期是其作用域结束而结束。堆上面,直至程序将其销毁前一直处于活动状态
       //需要使用delete关键字进行删除
       //在堆而不是栈上面创建的最大原因是生存期
       
       int* another = new int[5];
       for (int i = 0; i < 5; i++)
       {
              another[i] = 2;
       }
       delete[] another;
}

C++11有更加安全的数组形式

但是原始数组也可以用。新的数组形式,也许会在后面用到

#include <array>
std::array<int, 5> anothers;//有边界检查,更加安全之类的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值