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

C语言 指针的详解与应用笔记

一、指针详解

1.指针简介

指针(Pointer)C语言的一个重要知识点,其使用灵活、功能强大,是C语言的灵魂
指针与底层硬件联系紧密,使用指针可操作数据的地址,实现数据的间接访问

2.计算机存储机制

int a = 0x12345678;
short b = 0x5A6B;
char c[ ] = {0x33, 0x34, 0x35};

3.定义指针

指针即指针变量,用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。若指针存放了某个数据单元的首地址,则这个指针指向了这个数据单元,若指针存放的值是0,则这个指针为空指针
定义一个指针变量:

16位系统:x=232位系统:x=464位系统:x=8

4.指针的操作

若已定义:

  • int a; //定义一个int型的数据
  • int *p; //定义一个指向int型数据的指针
  • 则对指针p有如下操作方式:

5.数组与指针

数组是一些相同数据类型的变量组成的集合,其数组名即为指向该数据类型的指针。数组的定义等效于申请内存、定义指针和初始化

例如:char c[ ] = {0x33, 0x34, 0x35};

等效于:申请内存

定义char *c = 0x4000;

初始化数组数据

利用下标引用数组数据也等效于指针取内容。

例如:c[0];等效于:*c;

c[1];等效于:*(c+1);

c[2];等效于:*(c+2);

6.注意事项

在对指针取内容之前,一定要确保指针指在了合法的位置,否则将会导致程序出现不可预知的错误
同级指针之间才能相互赋值,跨级赋值将会导致编译器报错或警告

二、指针应用

传递参数
使用指针传递大容量的参数,主函数和子函数使用的是同一套数据,避免了参数传递过程中的数据复制,提高了运行效率,减少了内存占用
使用指针传递输出参数,利用主函数和子函数使用同一套数据的特性,实现数据的返回,可实现多返回值函数的设计
传递返回值
将模块内的公有部分返回,让主函数持有模块的“句柄”,便于程序对指定对象的操作
直接访问物理地址下的数据
访问硬件指定内存下的数据,如设备ID号等
将复杂格式的数据转换为字节,方便通信与存储

END

http://www.cnnetsun.cn/news/190533.html

相关文章:

  • 8746253
  • 2025终极指南:B站抽奖自动化助手,高效提升中奖率的实战手册
  • 通过虚拟串口软件简化设备调试流程:实用技巧
  • Switch大气层系统完整教程:从零配置到专业优化
  • Figma中文插件终极指南:设计师必备的界面翻译解决方案
  • FigmaCN终极指南:如何让专业设计工具说中文
  • Koalageddon终极指南:5步解锁全平台游戏DLC的完整教程
  • LeagueSkinChanger完全指南:轻松实现英雄联盟皮肤自由
  • Windows Defender管理指南:优化系统安全防护性能
  • 终极指南:diff-pdf - 让PDF文档差异对比变得简单高效
  • AEUX实战指南:3步搞定设计稿到动画的无缝转换
  • OBS VirtualCam虚拟摄像头终极配置与故障排查指南
  • APK Editor Studio终极指南:一站式安卓应用编辑解决方案
  • PDF对比利器diff-pdf:轻松找出文档差异的专业工具
  • APK Editor Studio终极指南:零基础掌握安卓应用编辑利器
  • 深度系统启动盘制作:3分钟快速上手指南
  • FF14副本动画智能跳过解决方案:告别重复等待
  • 深度启动盘制作工具完全指南:从入门到精通
  • 5分钟搞定Figma中文界面:设计师的本地化解决方案
  • 打造专业歌词同步效果:零门槛智能制作工具指南
  • Motrix终极提速指南:7个简单步骤让下载速度翻倍
  • NVIDIA色彩校准终极解决方案:告别宽色域显示器的色彩困扰
  • 超强DoubleQoL模组:彻底革新《工业队长》工业帝国建设体验
  • 碧蓝航线Live2D提取工具:新手必看的使用指南与实战技巧
  • 3天搭建OpenEMS智能能源监控平台:实战配置全解析
  • BetterNCM插件终极指南:从安装到个性化音乐体验
  • PDF对比终极指南:diff-pdf工具让文档差异一目了然
  • BetterNCM-Installer终极配置指南:解锁网易云音乐插件新体验
  • 小爱音箱音乐播放新纪元:XiaoMusic开源工具让音乐随心听
  • AzurLaneLive2DExtract:三分钟解锁碧蓝航线Live2D宝藏