指针运算

博客搬家:https://blog.csdn.net/zheyufuck/article/details/53187042

什么是指针运算

指针运算是指针对指针进行整数加减运算,以及指针之间进行减法运算的功能,那么指针的加减运算的加n或减n是不是在原来的基础上加n或减n呢。下面通过gdb调试方法去了解指针的加减运算。

调试程序

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct stu{

        int age;
        char * name;

};


int main(){

        int num = 10;
        int *p_num = &num;

        printf("p_num value is %d\n",*p_num);

        struct stu * p_stu = (struct stu*)malloc(sizeof(*p_stu));
        p_stu->name = (char*)malloc(5*sizeof(char));
        strcpy(p_stu->name,"jack");
        p_stu->age = 20;

        printf("student name is: %s",p_stu->name);
        printf("\t age is: %d\n",p_stu->age);


        return 0;
}           

①指针 p_num 的运算:
先打印p_num,再打印进行加减运算的后的值:
这里写图片描述
为什么对指针加n或减n之后的结果是增加了’n×4’或减少了’n×4’呢,而不是直接加n或减n呢。这就是指针运算的特征了;在c语言中,对指针进行加1或减1的运算,地址的值会增加当前指针所指向数据类型的长度。而这里p_num的值实际是num变量的地址,num为int类型,占用4个字节,这也就是为什么是加n×4或减n×4的原因:
这里写图片描述

②指针 p_stu 的运算:
先打印p_stu,再打印进行加减运算的后的值:
这里写图片描述

先打印&p_stu->name,再打印进行加减运算的后的值:
这里写图片描述

总结

对于指针的运算,对指针加减N,指针前进或后退“当前指针指向的数据类型的长度×N”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值