C语言-指针

server/2024/10/18 9:21:32/

1.什么是指针

  • 指针是内存中一个最小单元的编号,也就是地址。(内存的最小单位为1byte)
  • 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。
  • 指针的大小在32位平台是4个字节,在64位平台是8个字节。

2.指针和指针类型

2.1 指针解引用

int类型修改4个字节

char类型修改1个字节

2.2 指针+1

int类型加了4个字节,char类型增加了1个字节。 

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

         如果是int*的指针,解引用访问4个字节,如果是char*的指针,解引用访问1个字节。

  • 指针的类型决定了指针+-1操作的时候,跳过几个字节

3. 野指针

概念: 野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)

3.1 野指针成因

  • 指针未初始化

  • 指针越界访问

当指针指向的范围超出数组arr的范围时,P就是野指针 

  • 指针指向的空间释放

 调用结束,a的空间被销毁

3.2 如何避免野指针

  1.  指针初始化

  2. 小心指针越界

  3. 指针指向空间释放及时置NULL

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

  5. 指针使用之前检查有效性

4.指针运算

 4.1 指针+-整数

将arr所有元素赋值为1的三种做法

4.2 指针-指针 

  •  指针-指针的绝对值,为指针和指针之间元素的个数。
  • 不是所有的指针都能相减,指向同一块空间的2个指针才能相减!

 4.3 指针关系运算

  • 允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较

5.指针和数组

  •  在 C语言中,虽然平时访问数组的时候是用 arr[ i ] 进行表示,但在底层解析的时候,其实是通过 *(arr + i) 这样的指针配合解引用的方式来做到的。这是指针与数组之间所能联系的核心所在。

6. 二级指针

二级指针变量是用来存放级指针变量的地址的 

7.指针数组

存放指针的数组就是指针数组 

原视频连接:77. 【C语言初阶】指针_指针和指针类型_哔哩哔哩_bilibili 


http://www.ppmy.cn/server/103943.html

相关文章

C++拾趣——使用VSCode跨平台调试CMake编译的C/C++项目

大纲 远程连接编译调试安装插件/组件VSCode插件调试组件 配置CMakePresets.json配置CMake Tools调试 参考资料 VSCode的远程开发功能为开发者带来了诸多好处,极大地提升了开发效率和灵活性。首先,它允许开发者在本地编辑环境中直接连接到远程服务器或容器…

俄罗斯Yandex广告怎么做?Yandex ads广告搭建与效果优化设置指南

您可以在Yandex推广中使用移动应用广告来覆盖数百万搜索和Yandex广告网络受众,从而提高应用的盈利能力。为了获得最佳效果,请在设置广告系列时遵循我们的建议。 入门 在 Yandex Direct 中创建广告活动。转到营销活动向导 → 应用安装和应用内转化&…

数据结构-线性表-单链表

一、了解单链表 1. 单链表的定义 单链表是一种线性数据结构,由一系列节点构成,每个节点包含两个部分:数据域和指向下一个节点的指针。在单链表中,头指针指向第一个节点,最后一个节点的指针指向 NULL,表示链…

Prometheus3: 监控CPU

1. 查看监控CPU所需的key [rootlocalhost node_exporter]# curl http://localhost:9100/metrics | grep -i node_cpu | head% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed0 0 0 0 …

【数学建模备赛】Ep05:斯皮尔曼spearman相关系数

文章目录 一、前言🚀🚀🚀二、斯皮尔曼spearman相关系数:☀️☀️☀️1. 回顾皮尔逊相关系数2. 斯皮尔曼spearman相关系数3. 斯皮尔曼相关系数公式4. 另外一种斯皮尔曼相关系数定义5. matlab的用法5. matlab的用法 三、对斯皮尔曼相…

MapStruct魔法:让Bean拷贝变成艺术

文章目录 传统样板代码的困扰引入MapStruct整合MapStruct引入依赖Mapping 注解测试用例Mapping 注解部分用法 Spring依赖注入MapStruct 的 IDEA 插件小结 技术派项目源码地址 : Gitee :技术派 - https://gitee.com/itwanger/paicodingGithub :技术派 - https://github.com/itw…

数据库进阶 - 可重复读与读已提交视图:创建时机的深度分析

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 可重复读与读已提交视…

Python 的装饰器简单入门

Python 的装饰器简单入门 一、简单介绍 定义:装饰器是可调用的对象,其参数是另一个函数(被装饰的函数)。装饰器可能会处理被装饰的函数,然后把它返回,或者将其替换成另一个函数或可调用对象。 例如&…