c学习-指针加减操作

#include<stdio.h>
#define SIZE 4
int main()
{
    int urn[5] = { 100,200,300,400,500 };
    int* ptr1, * ptr2, * ptr3;
    //指针赋值需要类型兼容
    ptr1 = urn;
    ptr2 = &urn[2];
    ptr3 = &urn[4];
    //指针解引用 ,取值 指针也是变量 ,可以取地址
    printf("pointer value, deferenced pointer , pointer address\n");
    printf("ptr1 = %10p, *ptr1 = %10d  &ptr = %10p \n", ptr1, *ptr1, &ptr1);

    //指针与整数相加,会将整数x对于数据类型大小,加上原来的值 超过了数组范围,除了数组后第一个位置,其他未定义
    //指针加法
    printf("adding an int to pointer\n");
    printf("ptr1 + 4 = %10p, *(ptr1+4) = %10d", ptr1 + 4, *(ptr1 + 4));
    //指针递增
    ptr1++;
    printf("values after ptr1++\n");
    printf("ptr1 = %20p, *ptr1 = %20d, &ptr = %20p\n", ptr1, *ptr1, &ptr1);
    //指针递减
    printf("values after ptr2--\n");
    ptr2--;
    printf("ptr2 = %20p , *ptr2 = %20d ,&ptr2 = %20p", ptr2, *ptr2, &ptr2);

    ptr1--; ptr2++;
    printf("pointer reset to original value \n");

    printf("ptr1 = %20p ,ptr2 = %20p", ptr1, ptr2);
    //指针互减 结果是2 意指元素之间相差两个int 即往前数两个
    printf("subtracting one pointer from another \n");
    printf("ptr2 = %20p , ptr1 = %20p , ptr2- ptr1= %td", ptr2, ptr1, ptr2 - ptr1);
    //指针减去整数

    printf("subtract one int from one pointer \n");

    printf("ptr3 = %d ,ptr3 - 2 = %d", *ptr3, *(ptr3 - 2));



}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值