C语言-指针

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

相关推荐
孙启超1 小时前
【AI开发之Rust】第 8 课:泛型、trait 与 trait 对象
开发语言·后端·rust
2501_933670791 小时前
经营财务岗技能栈拆解:Excel、SQL、BI、预算分析怎么准备
开发语言
老当益壮梁奶奶1 小时前
ARM 汇编学习笔记(二)启动代码、指令、函数调用与 C 混合编程
c语言·arm开发·单片机·嵌入式硬件·51单片机
数据狐(Datafox)2 小时前
1688商品列表API接口解析(附 JSON 样例)
java·开发语言·数据库·爬虫·json
小灰灰搞电子2 小时前
Rust Once 、OnceLock、LazyLock 一次性初始化详解
开发语言·后端·rust
hqyjzsb2 小时前
规划工商管理大学成长:搭建四层能力体系,重视高阶的 AI 能力建设
开发语言·人工智能·python·microsoft·职场和发展·数据挖掘·业界资讯
for_ever_love__3 小时前
爬虫项目: 获取高分电影的数据总结
开发语言·python·学习
weixin_307779133 小时前
C++代码实现MATLAB中的ode23t函数功能
开发语言·c++·算法·matlab
wuminyu3 小时前
Markword在紧凑对象头上的实现原理剖析
java·linux·c语言·jvm·c++
君顾13 小时前
24小时自助健身房系统开发实战与完整指南
java·开发语言·健身房