0


室友一把吃鸡的时间带你拿捏C语言指针类型的意义

在这里插入图片描述
在这里插入图片描述

C语言指针类型的意义

一般情况下,可划分为两点:
1、指针±整数:指针的类型决定了指针向前或者向后走一步有多大(距离)。
2、指针的解引用:指针的类型决定了对指针解引用的时候有多大的权限(能操作几个字节)

接下来我将用代码举例子的形式来为大家讲解指针的这两个意义!

指针±整数

在这里插入图片描述
在这里插入图片描述
从代码演示中,我们可以清楚地观察到p1指针的最初位置为00B3F758(16进制表示,下同),p1指针+1以后,指针的位置变成了00B3F75C,这中间差了4个字节的大小;而p2指针的最初位置为00B3F740,p2指针+1以后,指针的位置变成了00B3F741,这中间差了1个字节的大小。
在这里插入图片描述
在这里插入图片描述
从代码演示中,我们可以清楚地观察到p1指针的最初位置为00EFFAC8(16进制表示,下同),p1指针+1以后,指针的位置变成了00EFFAC4,这中间差了4个字节的大小;而p2指针的最初位置为00EFFAB0,p2指针+1以后,指针的位置变成了00EFFAAF,这中间差了1个字节的大小。

实践是检验真理的唯一标准,你还可以用其他类型的指针继续尝试类似这样的操作,最终你会发现,指针类型的意义之一是:指针的类型决定了指针向前或者向后走一步有多大(距离)。

指针的解引用

在这里插入图片描述
在这里插入图片描述
打印出来的结果我们会惊奇的发现,为何sustain变量被指针变量p1重新赋值0后打印出来的结果就变成了0,而resource变量被指针变量p2重新赋值0后打印出来的结果依旧那么的大的数是1719109632,这究竟是为何呢?接下来我用他俩内存的变化来为大家讲解原因。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从代码内存的演示中,我们惊奇地发现指针p1和指针p2同时被解引用赋值为0的时候,指针p1一次性改变了4个字节的内存空间变化,而指针p2一次性改变了1个字节的内存空间变化,而p1对应的指针类型为int类型的指针,而p2对应的指针类型为char类型的指针,从而我们可以得出指针类型的意义之一是:指针的类型决定了对指针解引用的时候有多大的权限(能操作几个字节)。(实践是检验真理的唯一标准,你还可以多用其他的指针类型来进行类似的操作获取结论)

附1:

整体演示代码提取:

#define _CRT_SECURE_NO_WARNINGS 1//#include<stdio.h>////int main()//{//    int entertain = 0x11223344;//    int *p1 = &entertain;//    int retain = 0x66778899;//    char *p2 = &retain;//    printf("请看int*指针类型+1地址位置的变化\n");//    printf("%p\n", p1);//    printf("%p\n", p1 + 1);//    printf("请看char*指针类型+1地址位置的变化\n");//    printf("%p\n",p2);//    printf("%p\n", p2 + 1);//    return 0;//}//#include<stdio.h>////int main()//{//    int entertain = 0x11223344;//    int *p1 = &entertain;//    int retain = 0x66778899;//    char *p2 = &retain;//    printf("请看int*指针类型-1地址位置的变化\n");//    printf("%p\n", p1);//    printf("%p\n", p1 - 1);//    printf("请看char*指针类型-1地址位置的变化\n");//    printf("%p\n", p2);//    printf("%p\n", p2 - 1);//    return 0;//}#include<stdio.h>intmain(){int sustain =0x11223344;int*p1 =&sustain;int resource =0x66778899;char*p2 =&resource;*p1 =0;*p2 =0;printf("%d\n", sustain);printf("%d\n", resource);return0;}

附2:

上述就是C语言关于指针类型意义的讲解,下篇文章将讲解的是C语言的野指针问题,欲知后事如何,请听下章分析!

备注:

楼主不才,不喜勿喷,若有错误或需要改进的地方,非常感谢你的指出,我会积极学习采纳。谢谢家人们一直以来的支持和鼓励,我会继续努力再接再励创作出更多优质的文章来回报家人们的。编程爱好的xdm,若有编程学习方面的问题可以私信我一同探讨(我尽力帮),毕竟“众人拾柴火焰高”,大家一起交流学习,共同进步!

在这里插入图片描述

2022.1.11


本文转载自: https://blog.csdn.net/weixin_53811859/article/details/122439575
版权归原作者 hai好 所有, 如有侵权,请联系我们删除。

“室友一把吃鸡的时间带你拿捏C语言指针类型的意义”的评论:

还没有评论