指针的运算

目录

一.前言

二.指针的步长

三.指针的运算


一.前言

        我们知道一个指针中存放的就是一个内存地址,那这个内存地址能否进行加减乘除的运算呢?

二.指针的步长

        下面我们来看下面这段代码:

        

int a=1;
int* p=&a;
p+1;

这段代码中指针p进行了加一操作,是只对它的内存地址进行加一操作吗?

        这就不得不提起我们指针步长的概念了,这里的步长就是指针移动一次的字节个数。由于我们这里定义的是int类型的指针,因此我们这里的p+1也就是移动了4个字节。

三.指针的运算

        不同于普通变量,我们的指针并不是所有的运算都能进行。

        在我们的指针中也分为有意义的操作和无意义的操作。其中有意义的操作又包括:指针跟整数进行加,减操作(每次移动N个步长);指针跟指针进行减操作(能够求出间隔步长)。

        无意义的操作有:指针跟整数进行乘除操作,因为这些操作都会让指针的指向不明。

同时,指针跟指针进行加,乘除三个操作的时候也是无意义的。

在知道了哪些有意义,哪些无意义之后,我们就可以用代码来验证下有意义的操作,来让我们更好的掌握指针的运算。

int main(){
//首先定义一个数组
int arr[]={1,2,3,4,5,6};

//获取其中0索引的内存地址
int* p1=&arr[0];

//通过解引用符*来打印0索引的值
printf("%d\n",*p1);

//通过+1来实现步长的加一,使指针指向了数组的1索引
printf("%d\n",*(p1+1));

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值