博客搬家: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 = #
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,再打印进行加减运算的后的值: