指针与迭代器基本原理用法

指针

在程序运行的时候,代码以及数据都会存在内存当中,内存是有序的字节序列,而变量都会直接分配一定的内存的字节单元,我们可以通过直接按名字访问,也可以用第二种方法,既通过内存的地址访问所需的内容,这就需要一种新的内存单元,那就是指针。

指针保存着一个对象的地址,或者可以说指向这个对象,其中内存存储的是其指向元素的地址,可以间接调用。

指针变量的定义:

int *pi; //定义一个存放int类型的指针,可以指向int元素。同理,只需要换换类型就好

int* pi; //效果同上;

int* pi,pi2;只有pi是指针,而pi2不是

指针可以间接的改变对象的元素,如:

int x=100;

int *pi=&x;

*pi=10;

这样x=10;间接的操控pi指向的x;

指针一般定义都需要进行初始化,切记不可乱指向,可能会导致程序崩溃,一般的初始为空指针方法:

int *pi=0;

int *pi=nullptr;

int *pi=NULL;

不可以间接通过变量0来让他成为空指针;

可以通过算术运算来进行地址值的增加与改变

如pi++ 如果是int加四个字节,是char加一个字节。

迭代器--iterator

迭代器是连接stl(标准模板库)中容器与算法的桥,一些容器如set需要用迭代器才可以指向元素与运用,但vector可以直接直接通过下标的方式进行输出,但不可更改,

定义:

vector<int>::iterator iter;

*iter 解引用,既指向元素,可用于输出,一般先使iter指向容器的初始地址。例如iter=s.begin();

const vector<int>s; 使iter=s.begin();

等同于 vector<int>s; 使iter=s.cbegin();

iter+=n;加法的复合赋值。也可以减法;

iter++;指向容器的下一个元素;

iter+n;指向加到第n个元素,也可以减;

可以通过==或!=进行判断指向元素是否相同;

总体来说,迭代器类似于指针,提供对象间接访问,但迭代器适用类型更为少,更适于在容器中适用

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值