【硬核】C语言指针是什么?深入浅出带你掌握C语言指针!

news2025/1/17 1:06:41

指针与底层硬件联系紧密,使用指针可操作数据的地址,实现数据的间接访问,本文章内容如下


1、C语言指针的作用
2、计算机的存储机制
3、如何定义指针
4、如何操作指针
5、数组与指针的关系
6、指针使用中的一些注意事项


1、C语言指针有什么作用

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

2、计算机的存储机制

在这里插入图片描述
计算机的内存都是以字节为单位(一个字节等于8个位,分成高四位和底四位),并且每一个字节都对应一个地址
对于非数组变量是把小端放在第一位(小端模式)
对于数组变量是从前到后放入地址中,并且对于两个字节的变量是跟非数组变量的存储方式相同(小端放在第一位)

3、定义指针

指针即指针变量,用于存放其他数据单元(变量/数组/结构体/函数等)的首地址。若指针存放了某个数据单元的首地址,则这个指针指向了这个数据单元,若指针存放的值是0,则这个指针为空指针
在这里插入图片描述

4、指针操作

在这里插入图片描述
指针数据地址存储方式:

char a=0x66char *p=&a;

在这里插入图片描述
打印*p的时候是把p地址内部存的内容拿出来作为地址去找内容

5、数组与指针

数组是一些相同数据类型的变量组成的集合,其数组名即为指向该数据类型的指针。数组的定义等效于申请内存、定义指针和初始化
在这里插入图片描述
数组和指针关系如下图所示
1、数组可以用指针表示:
在这里插入图片描述
2、指针可以用数组表示:
在这里插入图片描述

6、指针使用中注意事项

1、指针使用中要确保指针指向地址有数据
2、定义指针一定要对指针赋值,要不然会导致指针指向到不确定的地址,导致程序出错
3、同级指针之间才能相互赋值,跨级赋值可能会导致出错

int a;
int *p;
a=*p;//把指针p指向地址取出,去找地址指向寄存器中的内容并取出,赋值给a
p=&a;//把数据a的首地址赋值给p

在这里插入图片描述

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

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

相关文章

企业级架构设计原则(含架构管理原则、业务架构设计原则、应用架构设计原则、数据架构设计原则、技术架构设计原则)

Togaf中的架构原则是一组用于指导企业架构设计和决策的基本准则。这些原则旨在支持组织的目标、价值观和战略,并提供一致性、可持续性和可扩展性的架构方案。 Togaf中提供了一些常见的架构原则,比如:保持一致性:确保架构与组织的目…

MySQL 性能调优及生产实战篇(二)

前言数据结构HASHBinary Search Trees、AVL TreesRed/Black TreesB TreesB Trees 数据存储InnoDBMyISAM 索引优化索引匹配方式哈希索引组合索引聚簇、非聚簇索引覆盖索引 优化细节(important)数据库勿做计算尽量主键查询前缀索引索引扫描排序子查询范围列…

干货满满---90条简单实用的Python编程技巧

对于Python,想必大家都不陌生,自从它问世以来得到了广大编程爱好者的追捧和喜爱,但是再好的东西都需要讲究技巧和策略方法,才能达到事半功倍的效果,下面是我近几年的学习心得和总结,希望能对大家带来一定帮…

不懂就要问,现在的物联卡还有人用吗?

很多朋友私信小编,现在的物联卡还能买吗? 当然,对于企业设备来讲,物联卡是一直可以使用的,而且非常稳定。 如果是用在个人手机上面,可以说也是可以用的,只不过是使用时间长短的问题。 ​ 下面…

ChatGPT为企业应用赋能

chatgpt-on-wechat和bot-on-anything两个项目都支持企业微信部署,其中前者功能比较丰富,推荐! 如需帮助,可以搜索wx:Youngerer 找到我! 功能展示: ![在这里插入图片描述](https://img-blog.csd…

【Linux升级之路】3_Linux进程概念

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux升级之路】 ✒️✒️本篇内容:认识冯诺依曼系统,操作系统概念与定位,深入理解进程概念(了解PCB&…

C语言函数大全-- m 开头的函数(2)

C语言函数大全 本篇介绍C语言函数大全-- m 开头的函数 1. mkdirat 1.1 函数说明 函数声明函数功能int mkdirat(int dirfd, const char *pathname, mode_t mode);它是一个 Linux 系统下的系统调用函数,用于在指定目录下创建新的子目录 参数: dirfd &a…

推荐一个一键AI抠图网站

一键去除图片背景 在这个数字化的世界里,我们经常需要处理各种图片,无论是用于个人的社交媒体,还是用于商业的广告设计。 然而,图片处理往往需要专业的技能和复杂的软件,这对许多人来说可能是个挑战。但现在&#xf…

3. Python字符串

文章目录 一、修改字符串大小写1.1 将字符串中每个单词的首字母改为大写1.2 将字符串中所有的字母改为大写1.3 将字符串中所有的字母改为小写 二、拼接字符串三、添加空白3.1 使用制表符添加空白3.2 使用换行符添加空白3.3 制表符和换行符同时使用 四、删除空白4.1 仅去掉字符串…

redis单机安装

1. 安装gcc 2.下载并编译redis wget http://download.redis.io/releases/redis-7.0.4.tar.gz 直接下载到虚拟机中解压 编译 安装redis 执行命令: make install PREFIX/usr/local/redis/ ,会将redis安装到指定目录下,在这个目录下会生产bin目录 在安…

《花雕学AI》人类推理能力对AI来说是什么?用ChatGPT来检验一下

”这里有一本书、九个鸡蛋、一台笔记本电脑、一个瓶子和一个钉子,请告诉我如何把它们稳定地堆叠在一起?“ 这是去年提出的一道测试推理能力的题目,当微软的计算机科学家开始试验一种新的AI系统时,他们要求AI解决这个难题&#xf…

【Java 并发编程】CAS 原理解析

CAS 原理解析 1. 什么是 CAS?1.1 悲观锁与乐观锁1.2 CAS 是什么? 2. CAS 核心源码3. CAS 实现原子操作的三大问题3.1 ABA 问题3.2 循环性能开销3.3 只能保证一个变量的原子操作 4. synchronized、volatile、CAS 比较 1. 什么是 CAS? 1.1 悲观…

物业企业多种类型合同,用泛微今承达实现统一数字化管理

随着物业业务的不断发展,物业服务越来越精细化、专业化,旨在为居民社区提供更便利的服务。 物业企业提供多种形态、全方位、立体式的综合服务,包括基础物业服务、业主增值服务(空间运营收入、房屋经纪、电商服务、社区金融、家政服务及养老服…

手撕-扫雷

一、前言-认识扫雷 二、打印菜单 三、创建棋盘并初始化 四、打印棋盘 五、布置雷 六、排查雷(统计坐标周围雷的个数) 七、扫雷代码全析(game.h game.c test.c) 铁汁们,今天给大家分享一篇扫雷游戏的实现&#…

Python快速批量修改图片尺寸

之前我们写过快速批量获取图片的大小,该文章链接在这里:Python每日一个知识点9----批量输出图片尺寸 今天我们分享一个快速批量修改图片尺寸的小脚本,我们一下看一下 先看一下目录结构: 文件夹:【原始图片】&#xf…

在阿里做了6年软件测试,4月无情被辞,想给划水的兄弟提个醒

先简单交代一下背景吧,某不知名 985 的本硕,17 年毕业加入阿里,以“人员优化”的名义无情被裁员,之后跳槽到了有赞,一直从事软件测试的工作。之前没有实习经历,算是6年的工作经验吧。 这6年之间完成了一次…

RabbitMQ 运维备忘录(一)

文章目录 1. 基础信息参考一些官方的链接单节点安装 RabbitMQ开启 web 端管理界面 2. 一些基本操作应用管理服务端口开放信息用户管理虚拟主机 vhost 管理web 界面管理队列信息查询交换器信息查询绑定关系的信息查询TCP/IP 连接信息查询信道信息查询消费者信息查询服务状态查询…

英伟达开放BEVFusion部署源代码,边缘端实时运行(高达25FPS)

以下文章来源于微信公众号:集智书童 链接:https://mp.weixin.qq.com/s/6BWohe2FxRN8E-yyp_32fg 本文仅用于学术分享,如有侵权,请联系后台作删文处理 引言: 众所周知,雷达与相机的融合方案由于稀疏卷积的原…

STM32F4_PWM DAC

目录 1. 为什么需要使用PWM DAC 2. PWM DAC简介 3. 硬件设计 4. 软件设计 4.1 main.c 4.2 PWMDAC.c 4.3 PWMDAC.h 1. 为什么需要使用PWM DAC 虽然STM32F4自带DAC模块,但是在有些时候,可能出现两个DAC不够用的情况(STM32F4只有两个DAC&…

看过来!一文揭秘为什么选TikTokTikTok数据怎么分析

为什么要选择TikTok开小店?以及商家在运营TikTok之前要了解掌握哪些TikTok相关数据?要分析哪些数据、怎么看TikTok数据才能让商家更快更及时地改进优化自己的TikTok营销策略?往下看。 一、选择TikTok开小店的原因: 1. TK作为一个…