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

指针 重点干货2

时间:2024-10-09 19:54:48浏览次数:10  
标签: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管脚具有......
  • 智能指针的创建
    智能指针是C++中用于自动管理动态分配内存的工具,主要有三种类型:std::unique_ptr、std::shared_ptr和std::weak_ptr。下面是如何创建和使用这些智能指针的详细说明:1.std::unique_ptr用途:std::unique_ptr是一种独占式智能指针,确保指向的对象在同一时间只能被一个指针拥有......
  • Unity 从零开始的框架搭建1-1 unity中对象调用的三种方式的优缺点分析【干货】
    该文章专栏是向QFrameWork作者凉鞋老师学习总结得来,吃水不忘打井人,不胜感激Unity框架搭建学习笔记1-1,前一个1代表凉鞋的第一季教程,后一个1代表该季第一篇我的文章 unity中对象调用的三种方式方法调用,例如:A调用B的SayHello方法委托或者回调,例如:界面监听子按钮的点击......
  • Java 指针与引用全解析
    (一)Java的发展与指针引用概念Java作为一种广泛应用的编程语言,在发展过程中借鉴了许多其他语言的特性,同时也进行了创新和改进。其中,与C++的关系尤为密切。虽然Java没有像C++那样明确的指针定义,但在底层逻辑上,Java的引用实际上与C++的指针有着相似之处。Java的设......
  • 【干货】数据分析的三个核心维度:描述性、诊断性与预测性分析
    数据分析的本质在于从庞大而复杂的数据中挖掘深层次的规律和机理,进而对未来的可能性进行精准预测。阅读本文,让我们一起深入探索数据分析的三个关键层面:描述性分析、诊断性分析和预测性分析。这三个层面的数据分析引领我们探寻问题背后的原因,最终揭示未来的发展趋势。1.描......
  • 双指针
    双指针同向指针快慢指针从两端向中间的指针其他922.按奇偶排序数组II#include<vector>usingnamespacestd;classSolution{public://时间复杂度O(n),额外空间复杂度O(1)vector<int>sortArrayByParityII(vector<int>&nums){inteven=0......
  • c++指针传递与引用传递
    c不支持引用传递的!在C++中,指针传递和引用传递是两种常用的参数传递方式,它们各自有不同的特点和适用场景。下面是两者之间的主要区别:1.语法和使用指针传递定义和调用:函数参数是一个指针类型,调用时需要传递变量的地址。解引用:在函数内部需要使用解引用操作符*来访问指针......
  • C语言中指针解引用
    在32位的操作系统中,指针占据4个字节。在64位的操作系统中,指针占据8个字节。以下程序都是在32位操作系统中运行的。1.指针解引用程序运行结果为12345600进入调试,可以看到变量a在内存占4个字节,a的地址为0x008FF794,在内存中的存储方式为小端存储方式。当程序走完*p=0这一行......
  • 基础算法--递归算法【难点、重点】
    今天我们即将要开始讲解算法中第一块儿难啃地骨头--递归了,相信有不少小伙伴都因递归而迷惑过,本文就来给大家详细的讲解一下递归到底是什么东西。让你也能瞬间将他打回原形。递归的理解在学习递归之前,我们先理解递归。什么是递归呢?从名字上看我们可以想到递进+回归两个......
  • C++函数指针详解
    概述本文详细介绍了C/C++中的普通函数和类的成员函数的指针。结合C++代码示例讲解了函数指针作为其他函数的输入、返回值以及typedef如何提高代码可读性的实用技巧。对于类的成员函数(方法)指针,则分为静态和非静态两种情况。最后总结了普通函数、类的非静态成员函数、类的静态成员......