指针运算

博客搬家: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”

猜你喜欢

转载自blog.csdn.net/masterjackal/article/details/80565364