C语言指针详解与应用

news2024/11/28 14:34:23

写在前面:本文是基于哔哩哔哩江协科技[C语言] 指针的详解与应用-理论结合实践,真正理解指针!学习时写的笔记,复习查阅方便,如有侵权,联系删除。
另外本人也是初学者,有很多理解不透彻的或者错误的理解,希望大家多多批评指针,一起进步。

一、指针介绍

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

二、计算机存储机制

大端存储:高位存在低地址
小端存储:高位存在高地址
数组保存在连续的地址中
在这里插入图片描述

三、定义指针

指针即指针变量,用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。若指针存放了某个数据单元的首地址,则这个指针指向了这个数据单元,若指针存放的值是0,则这个指针为空指针
定义一个指针变量:
在这里插入图片描述
16位系统:x=2,32位系统:x=4,64位系统:x=8

四、指针的操作

  • 若已定义:
    int a; //定义一个int型的数据
    int *p; //定义一个指向int型数据的指针

  • 则对指针p有如下操作方式:
    在这里插入图片描述

char *p = &a ; // 注意这不是解引用,*号前面有数据类型是定义
  • 数组名为指向该数据类型的指针。

  • 在对指针取内容之前,一定要确保指针指在了合法的位置,否则将会导致程序出现不可预知的错误

  • 同级指针之间才能相互赋值,跨级赋值将会导致编译器报错或警告

在这里插入图片描述

五、指针应用

  • 传递参数
    使用指针传递大容量的参数,主函数和子函数使用的是同一套数据,避免了参数传递过程中的数据复制,提高了运行效率,减少了内存占用
    使用指针传递输出参数,利用主函数和子函数使用同一套数据的特性,实现数据的返回,可实现多返回值函数的设计
    值传递:复制变量。
  • 传递返回值
    将模块内的公有部分返回,让主函数持有模块的“句柄”,便于程序对指定对象的操作
/************************/
int Time[] = {22,23,24}; // 注意在模块内,要定义全局变量,局部变量会被销毁

int *GetTime(void)
{
	return Time
}
/************************/


int main(void)
{
	int *pt;
	pt=GetTime(); // 主函数持有模块的“句柄”
	return 0;
}

  • 直接访问物理地址下的数据
    访问硬件指定内存下的数据,如设备ID号等
    将复杂格式的数据转换为字节,方便通信与存储

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1187947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

聚焦谋发展,筑梦新征程——云起无垠乔迁新址

2021年7月,网络安全新锐企业北京云起无垠科技有限公司(以下简称:云起无垠)注册成立。云起无垠致力于研究漏洞挖掘尖端技术和打造卓越漏挖工具,并在业界迅速崭露头角,受到了广泛瞩目。 发展至今&#xff0c…

如何查看笔记本电脑电池损耗

1.下载图吧工具箱 在官网下,不要下错了,不然会有很多垃圾捆绑软件,我放一个百度云链接,安装包上传上去了 链接:https://pan.baidu.com/s/18dguF5OGktbPkW7EszZZqA 提取码:1024 2.安装打开后点击主办工具-…

基于SSM的公务用车管理智慧云服务监管平台

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

零基础产品经理如何迅速学习Axure原型制作?快速上手攻略!

如果Adobe xd是一个简单易用的UI设计软件,那么Axure应该是一个强大的原型软件。Axure不仅可以制作静态界面原型,还可以在此基础上增加交互效果。虽然Axure的功能比较复杂,但在学习和掌握之后,可以完美实现产品经理心目中的原型体验…

“产业大数据”助推园区实现可持续发展!

​产业园区在现代经济体系中扮演着重要角色,不仅是地方经济的重要支柱,更是企业发展的舞台。产业园区要想实现可持续的长远发展,不仅需要不断的招引优质企业入驻,更要时刻关注园内的企业,培育有潜力的企业,…

22款奔驰GLS450升级中规主机 实现导航地图 中文您好奔驰

很多平行进口的奔驰GLS都有这么一个问题,原车的地图在国内定位不了,语音交互功能也识别不了中文,原厂记录仪也减少了,使用起来也是很不方便的。星骏汇小许 Xjh15863 其实很简单,我们只需要更换一台中规的新主机就可以实…

算法记录|笔试中遇到的题

栈 394. 字符串解码730.统计不同回文子序列 394. 字符串解码 我自己写的方法 class Solution {public String decodeString(String s) {char[] chs s.toCharArray();LinkedList<Character> stack new LinkedList<>();for(char ch:chs){if(ch]){stack helper(st…

docker部署es+kibana

es 暴露的端口特别多 &#xff0c;十分耗内存&#xff0c;数据一般要放置到安全目录&#xff0c;挂载 官网推荐的命令&#xff1a;docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" elasticsearch…

C语言中一维指针、二维指针和三维指针

指针可以指向一份普通类型的数据&#xff0c;例如 int、double、char 等&#xff0c;也可以指向一份指针类型的数据&#xff0c;例如 int *、double *、char * 等。 如果一个指针指向的是另外一个指针&#xff0c;我们就称它为二级指针&#xff0c;或者指向指针的指针。 假设…

无代码开发:猪猪快递云与电商平台、CRM系统的快速集成

无代码开发及其价值 无代码开发正在逐渐改变我们的工作方式&#xff0c;它使得不具备编程知识的人也能够进行软件开发和集成。其中&#xff0c;猪猪快递云是一个综合性的智能物流服务平台&#xff0c;致力于为各类物流企业提供全方位、一站式的物流解决方案。该平台集成了多种…

覆盖13个行业,数据分类分级标准汇编更新啦!(附下载)

2016年11月&#xff0c;《网络安全法》明确将“数据分类”作为网络安全保护法定义务之一。 2021年9月&#xff0c;《数据安全法》再次具体确立了“数据分类分级保护制度”及其基本原则。 2021年11月&#xff0c;《个人信息保护法》、《网络数据安全管理条例(征求意见稿)》相继出…

YB1109M是一种高效电流模式具有固定操作频率的升压转换器。

YB1109MB 1.2MHz&#xff0c;2A输出电流&#xff0c;升压转换器 概述&#xff1a; YB1109M是一种高效电流模式具有固定操作频率的升压转换器。YB1109M已在NMOSFTET上集成了非常低的Rds以减少功率损耗并实现高效率。最大效率高达93%。YB1109M/YB1109MB可输出2AVIN高于3.3V且输…

报名开启!飞桨AI for Science公开课与共创计划邀您来学,探索AI与科学的融合

你是否对人工智能驱动的科学研究&#xff08;AI for Science&#xff09;感兴趣&#xff1f;是否想深入了解深度学习技术与科学计算的应用&#xff1f;现在&#xff0c;飞桨AI for Science公开课与共创计划正式开启报名&#xff01; 亮点 深度学习技术与科学计算融合的课程体…

低功耗MCU应用的编程技巧

低功耗微控制器&#xff08;MCU&#xff09;在许多电子设备中扮演着重要角色&#xff0c;特别是在依赖电池供电或者需要长时间待机的应用中。为了最大程度地延长电池使用寿命或减少能源消耗&#xff0c;开发人员需要采取针对低功耗的编程技巧。以下是一份关于低功耗MCU应用的编…

Window环境NFS服务务器搭建及连接

1.NFS服务端搭建&#xff0c; 下载haneWIN NFS 服务端软件&#xff08;工具下载路径&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1HXeQ8nIY4RHVltd0uAvFaw 提取码&#xff1a;w18j &#xff09; 2.安装haneWIN NFS 服务端软件比较简单&#xff0c;直接点下一步即可…

软件外包开发文档内容

项目的具体需求可能导致需要更多或更少的文档内容&#xff0c;并且某些文档可能会合并或细分成独立的部分。外包项目的文档应当根据项目规模、复杂性和特定需求来调整。软件外包开发文档通常包含以下部分&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;…

基于springboot实现智慧外贸平台系统【项目源码+论文说明】计算机毕业设计

基于springboot实现智慧外贸平台系统演示 摘要 网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合&#xff0c;利用java技术建设智慧外贸平台&#xff0c;实现智慧外贸的信息化。则对于进一步提高智慧外贸管理发展&#xff0c;丰富智慧外贸管理经验能…

康耐视深度学习ViDi-ViDi四大工具之一蓝色定位工具/Locate

目录 工具介绍使用步骤说明调整工具ROI添加特征标签生成定位姿态训练并审核模型编辑器参数说明蓝色定位工具/Locate工具 工具介绍 蓝色定位工具用于识别和定位图像中的特定特征或特征组。该工具的输出可用于为其他ViDi 工具提供位置数据。使用该工具时,您提供图像训练集,然后…

通义千问, 文心一言, ChatGLM, GPT-4, Llama2, DevOps 能力评测

引言 “克隆 dev 环境到 test 环境&#xff0c;等所有服务运行正常之后&#xff0c;把访问地址告诉我”&#xff0c;“检查所有项目&#xff0c;告诉我有哪些服务不正常&#xff0c;给出异常原因和修复建议”&#xff0c;在过去的工程师生涯中&#xff0c;也曾幻想过能够通过这…