首页 > 其他分享 >指针 重点干货2

指针 重点干货2

时间:2024-10-09 19:54:48浏览次数:15  
标签:const 字节 指向 int 干货 数组 重点 指针

小伙伴们,如果没有看指针重点干货1的,可以去我博客里先看那篇,再看这篇哦~

目录

六.空间大小

七.解引用访问字节

八.void*指针

九.const修饰指针

十.野指针

1.指针变量没有初始化

2.指针越界访问

3.避免返回局部变量的地址

4.注意开辟的指针释放后要归为空指针

十一.重难点分析2

十二.指针数组和数组指针

十三.函数指针

十四.指针宝藏(这世界总有人在忙忙碌碌寻宝藏~~)

例1.

例2.

例3.

例4.

例5.

例6.

十五.自己练练手吧~~

例2.

例3.

例4.

例5.


六.空间大小

任何指针变量,指针类型的大小都是4或8,只是取决于不同环境,

如果是32位环境下,那就是4,

如果是64位环境下,那就是8

七.解引用访问字节

指针的类型决定了指针解引用时访问几个字节

所以注意char*的指针,解引用就只能访问1个字节
       int*的指针,解引用就只能访问4个字节

八.void*指针


注意:

void*指针可以用来接收任何类型的指针,但是不可以用来解引用,不可以用来指针的运算

因为void*,是无具体类型的指针,如果给它解引用,并不知道访问几个字节

包括加减操作,也是并不知道向后访问几个字节

所以void*指针只可以用来存放其他地址

             eg.

               

九.const修饰指针

const之后的变量是不可再改变的,因为这个变量具有了常属性

eg.

 const int a=10;
 a=20;  //err

 int a=10;
 int b=20;
 int const*p=&a;
 p=&b;            //没错,正确   因为是*p具有了常属性,而不是p,他俩含义不同,分别代表指针指向的值和指针所指向的地址
 *p=100;    //err   因为有了const,所以不能改变指向地址解引用后的值,即*p,因为它已具有了常属性,不能改变


 int a=10;
 int b=20;
 int *const p=&a;
 p=&b;      //err
 *p=200;   //正确,没错,原因是:因为const,所以不能改变p的值(即不能改变它指向的地址),但是可以改变p所指向的值(即 *p)
 printf("%d\n",a);

十.野指针

造成野指针的原因:

1.指针变量没有初始化

2.指针越界访问

3.避免返回局部变量的地址

4.注意开辟的指针释放后要归为空指针

十一.重难点分析2

十二.指针数组和数组指针


  (1)指针数组
本质是数组,只不过里面所存放的元素为指针,是存放指针的数组
整形数组:数组里面存放的是整数  

字符数组:数组里面存放的是字符    
指针数组:数组里面存放的是指针 eg.int* arr[6],char* arr[3]

(2)数组指针
本质是指针,
字符指针:指向字符的指针

整形指针:指向整形的指针 
数组指针:指向数组的指针

写法:int (*pa)[10] = &arr

十三.函数指针


函数指针变量:专门用来存放函数地址的变量
eg.  pf = &add  pf里面存放的是函数add的地址
但是这种写法不规范,就像数组指针一样,他代表指向数组的指针,那么函数指针是指向函数的指针
那么就得写成:   int(*pf)(int,int) = &add  或 char* (*p)(char,int) = &test

十四.指针宝藏(这世界总有人在忙忙碌碌寻宝藏~~)

举例来证明即可:

例1.

还有注意这个48是怎么算的?是通过转换成十进制来计算的

例2.

例3.

例4.

例5.

例6.

十五.自己练练手吧~~

例1.

例2.

例3.

例4.

例5.

写作不易,若有疑问,请各位大佬指教,谢谢!

标签:const,字节,指向,int,干货,数组,重点,指针
From: https://blog.csdn.net/2301_79978195/article/details/142794481

相关文章

  • PCB大神的设计经验,都是干货
    它不仅关系到电路的性能,还直接影响到产品的可靠性和生产成本。以下是资深PCB设计师在实战中积累的宝贵经验,旨在指导新手避免常见陷阱,提升设计质量。1.FPGA器件的管脚规划在涉及FPGA的电路设计前,使用QuartusII等软件进行管脚分配验证是必不可少的步骤。某些FPGA管脚具有......
  • Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】
    该文章专栏是向QFrameWork作者凉鞋老师学习总结得来,吃水不忘打井人,不胜感激Unity框架搭建学习笔记1-1,前一个1代表凉鞋的第一季教程,后一个1代表该季第一篇我的文章 unity中对象调用的三种方式方法调用,例如:A调用B的SayHello方法委托或者回调,例如:界面监听子按钮的点击......
  • Java 指针与引用全解析
    (一)Java的发展与指针引用概念Java作为一种广泛应用的编程语言,在发展过程中借鉴了许多其他语言的特性,同时也进行了创新和改进。其中,与C++的关系尤为密切。虽然Java没有像C++那样明确的指针定义,但在底层逻辑上,Java的引用实际上与C++的指针有着相似之处。Java的设......
  • c++指针传递与引用传递
    c不支持引用传递的!在C++中,指针传递和引用传递是两种常用的参数传递方式,它们各自有不同的特点和适用场景。下面是两者之间的主要区别:1.语法和使用指针传递定义和调用:函数参数是一个指针类型,调用时需要传递变量的地址。解引用:在函数内部需要使用解引用操作符*来访问指针......