当前位置: 首页 > news >正文

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 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【数学分析笔记】第2章第3节无穷大量(1)
  • PMP核心知识点—之项目管理基础
  • vue3+ts+vant4 列表下拉刷新+分页加载
  • C学习(数据结构)--> 实现顺序结构二叉树
  • 使用maven快速生成打包文件2
  • EmguCV学习笔记 C# 5.2 仿射变换
  • 从CSS注入到渗透未知网页
  • Nuxt学习_基础知识(二)
  • 开源模型应用落地-qwen2-7b-instruct-LoRA微调模型合并-Axolotl-单机单卡-V100(十)
  • 短剧视频推广连续多日遭受大量DDOS攻击,如何应对
  • 单片机驱动彩屏最简方案:单片机_RA8889最小开发板驱动控制TFT彩屏介绍(一)方案架构
  • 如何优雅的在页面上嵌入AI-Agent人工智能
  • [godot] 采用状态机时,如何处理攻击时移动?如“冲撞”
  • 【R语言】基于多模型的变量重要性图 (Variable Importance Plots)
  • 开学季数码好物分享!推荐适合学生党好用又实惠的平替电容笔!
  • CODING 缺陷管理功能正式开始公测
  • Debian下无root权限使用Python访问Oracle
  • ES6 ...操作符
  • ES6--对象的扩展
  • HTML中设置input等文本框为不可操作
  • HTTP中的ETag在移动客户端的应用
  • JavaScript对象详解
  • Java程序员幽默爆笑锦集
  • java概述
  • JS基础之数据类型、对象、原型、原型链、继承
  • Python_网络编程
  • SpingCloudBus整合RabbitMQ
  • sublime配置文件
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 来,膜拜下android roadmap,强大的执行力
  • 排序算法之--选择排序
  • 如何学习JavaEE,项目又该如何做?
  • 思考 CSS 架构
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 写给高年级小学生看的《Bash 指南》
  • 一些关于Rust在2019年的思考
  • 终端用户监控:真实用户监控还是模拟监控?
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # 透过事物看本质的能力怎么培养?
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #数学建模# 线性规划问题的Matlab求解
  • (02)vite环境变量配置
  • (03)光刻——半导体电路的绘制
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (poj1.3.2)1791(构造法模拟)
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (七)Activiti-modeler中文支持
  • (学习日记)2024.02.29:UCOSIII第二节