C语言指针加法/减法

减法运算

注意:如果两个指针都指向同一个数组中的元素,则他们之间可以相减、减法的结果就是胫骨哦调整(除以数组元素类型的长度),标识两个指针再数组中相隔多少个元素。
·如果两个指针并不是指向同一个数组的元素,则他们之间进行相减就是错误的·

指针的减法运算公式:就是两个指针的内存差值 / 指向的数据类型的内存空间大小

如果改变了指针类型指向的数据类型,对指针进行 + - 运算,其新指向的位置只和转换后的数据类型有关

如果是char , 则指针指向变化1byte
如果是int,则指针指向变化4byte

在这里插入图片描述

指针强转后对,指针++的影响

由于ptr 变成指向8bit的内存空间,所以如果想要访问到arr[1] 这个内存单元
就需要江ptr + 4个偏移量 = ptr + 4byte

#include "stdio.h"

int main(void) {
    int arr[5] = {1,2,3,4,5};

    int *p = arr;

    printf("%d\r\n",p[1]);  // 2


    char *ptr = (char *)(&arr[0]);
    printf("%d\r\n",ptr[4]);  // 2 
    
    return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值