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

【C语言】-指针(1)

个人主页深邃-❄️专栏传送门《C语言》《数据结构》Gitee仓库《C语言》《数据结构》目录内存和地址指针变量和地址指针变量和解引用操作符*指针变量的大小内存存放指针变量类型的意义指针的解引用指针-整数void* 指针指针运算指针- 整数指针 - 指针指针的关系运算代码仓库内存和地址计算机中常见的单位1byte 8bit1KB 1024Byte1MB 1024KB1GB 1024MB1TB 1024GB1PB 1024TB内存大小32位机器如下图1.一个地址大小为一个字节计算机中的编址并不是把每个字节的地址记录下来而是通过硬件设计完成的。不同的机器寻址能力不同我们可以简单理解32位机器有32根地址总线每根线只有两态表示0,1【电脉冲有无】那么⼀根线就能表示2种含义2根线就能表示4种含义依次类推。32根地址线就能表示2^32种含义每一种含义都代表一个地址内存单元的编号 地址 指针指针变量和地址指针变量和解引用操作符*变量创建的本质就是在内存申请空间存放数据例如 int 申请四个字节的空间intmain(){inta10;int*pa;//编号 地址 指针//p被称为指针变量理解为存放指针的变量//指针变量也是变量,指针变量是专门用来存放地址的return0;}p 被称为指针变量理解为存放指针的变量 \color{blue}{p被称为指针变量理解为存放指针的变量}p被称为指针变量理解为存放指针的变量指针变量也是变量 , 指针变量是专门用来存放地址的 \color{blue}{指针变量也是变量,指针变量是专门用来存放地址的}指针变量也是变量,指针变量是专门用来存放地址的其中 i n t ∗ 说明 b 的类型是 i n t ∗ 说明 p b 是指针变量 p b 指向 b \color{blue}其中int*说明b的类型是int*说明pb是指针变量pb指向b其中int∗说明b的类型是int∗说明pb是指针变量pb指向b解引用操作符#includestdio.hintmain(){inta100;int*paa;*pa0;return0;}∗ p a 的意思就是通过 p a 中存放的地址找到指向的空 \color{red}{*pa 的意思就是通过pa中存放的地址找到指向的空}∗pa的意思就是通过pa中存放的地址找到指向的空∗ p a 其实就是 a 变量了 , 所以 ∗ p a 0 这个操作符是把 a 改成了 0 \color{red}{*pa其实就是a变量了,所以*pa 0这个操作符是把a改成了0}∗pa其实就是a变量了,所以∗pa0这个操作符是把a改成了0指针变量的大小32位机器假设有32根地址总线每根地址线出来的电信号转换成数字信号后是1或者0那我们把32根地址线产⽣的2进制序列当做⼀个地址那么⼀个地址就是32个bit位需要4个字节才能存储。如果指针变量是用来存放地址的那么指针变量的大小就得是4个字节的空间才可以。同理64位机器假设有64根地址线一个地址就是64个⼆进制位组成的⼆进制序列存储起来就需要8个字节的空间指针变量的大小就是8个字节。结论 \color{green}{结论}结论• 32位平台下地址是32个bit位指针变量大小是4个字节• 64位平台下地址是64个bit位指针变量大小是8个字节• 注意指针变量的大小和类型是无关的只要指针类型的变量在相同的平台下大小都是相同的。内存存放intmain(){intb0x12345678;int*pbb;return0;}内存 - 高地址存高位数64位数组随着下标的增长地址是由低到高变化内存的换算1指针变量类型的意义问题指针变量的大小和类型无关只要是指针变量在同⼀个平台下 大小都是⼀样的为什么还要有各种各样的指针类型呢指针的解引用//代码1#includestdio.hintmain(){intn0x11223344;int*pin;*pi0;return0;}//代码2#includestdio.hintmain(){intn0x11223344;char*pc(char*)n;*pc0;return0;}如果int类型用double类型指针还会导越界问题结论指针的类型决定了对指针解引用的时候有多大的权限一次能操作及个字节。比如 char* 的指针解引用就只能访问⼀个字节而 int* 的指针的解引用就能访问四个字节。指针±整数char* 类型的指针变量1跳过1个字节 int* 类型的指针变量1跳过了4个字节。这就是指针变量的类型差异带来的变化。指针1其实跳过1个指针指向的元素。指针可以1那也可以-1结论指针的类型决定了指针向前或者向后⾛⼀步有多大距离void* 指针v o i d ∗ 类型的可以理解为⽆具体类型的指针或者叫泛型指针这种类型的指针可以⽤来接受任意类型地址。 \color{blue}{void * 类型的可以理解为⽆具体类型的指针或者叫泛型指针这种类型的指针可以⽤来接受任意类型地址。}void∗类型的可以理解为⽆具体类型的指针或者叫泛型指针这种类型的指针可以⽤来接受任意类型地址。但是也有局限性 v o i d ∗ 类型的指针不能直接进行指针的 − 整数和解引⽤的运算。 \color{blue}{但是也有局限性 void* 类型的指针不能直接进 行指针的-整数和解引⽤的运算。}但是也有局限性void∗类型的指针不能直接进行指针的−整数和解引⽤的运算。⼀般 v o i d ∗ 类型的指针是使⽤在函数参数的部分⽤来接收不同类型数据的地址这样的设计可以实现泛型编程的效果。 \color{blue}{⼀般 void* 类型的指针是使⽤在函数参数的部分⽤来接收不同类型数据的地址这样的设计可以实现泛型编程的效果。}⼀般void∗类型的指针是使⽤在函数参数的部分⽤来接收不同类型数据的地址这样的设计可以实现泛型编程的效果。指针运算指针的基本运算有三种分别是 \color{navy}{指针的基本运算有三种分别是}指针的基本运算有三种分别是•指针 − 整数 \color{navy}{• 指针- 整数}•指针−整数•指针 − 指针 \color{navy}{• 指针-指针}•指针−指针•指针的关系运算 \color{navy}{• 指针的关系运算}•指针的关系运算指针± 整数因为数组在内存中是连续存放的只要知道第⼀个元素的地址顺藤摸⽠就能找到后⾯的所有元素#includestdio.h//指针- 整数intmain(){intarr[10]{1,2,3,4,5,6,7,8,9,10};int*parr[0];inti0;intszsizeof(arr)/sizeof(arr[0]);for(i0;isz;i){printf(%d ,*(pi));//pi 这⾥就是指针整数}return0;}指针 - 指针前提两个指针指向同一块空间否则不能相减//指针-指针#includestdio.hintmy_strlen(char*s){char*ps;while(*p!\0)//或者while(*p ! 0 )\0的ascll码为0p;returnp-s;}intmain(){printf(%d\n,my_strlen(abc));return0;}统计的是\0之前的元素个数指针的关系运算即为字面意思指针间的关系运算intmain(){intarr[10]{1,2,3,4,5,6,7,8,9,10};//打印数组的内容intszsizeof(arr)/sizeof(arr[0]);int*parr;while(parrsz){printf(%d ,*p);p;}return0;}代码仓库❄️Gitee仓库《C语言》《数据结构》其中1个十六进制位4个二进制位0.5个字节所以32位0xFFFFFFFF32/4八个64位则16个 -计算机中常见的单位1byte 8bit1KB 1024Byte1MB 1024KB1GB 1024MB1TB 1024GB1PB 1024TB ↩︎

相关文章:

【C语言】-指针(1)

🦆 个人主页:深邃- ❄️专栏传送门:《C语言》《数据结构》 🌟Gitee仓库:《C语言》《数据结构》 目录内存和地址指针变量和地址指针变量和解引用操作符(*)指针变量的大小内存存放指针变量类型的…...

鸿子铭:1 个工具,实现录屏截图双功能,效率提升 200%

大家好,我是鸿子铭。平时大家在电脑上用的截图软件以及录视频的人可能会非常的多,其实我自己也用过很多。唯独这一款是我用的比较好用的。当初以为这款软件只是用来截图使用,后面用着用着截图加录视频,双双结合,这下让…...

外贸SEO网站外包的流程是什么

外贸SEO网站外包的流程是什么? 在当今全球化商业环境中,外贸SEO(Search Engine Optimization)网站外包已经成为许多企业提升国际市场竞争力的重要手段。但是,对于许多企业来说,如何高效地进行外贸SEO网站外…...

颠覆传统:5大核心技术让百度网盘提取码获取效率提升10倍

颠覆传统:5大核心技术让百度网盘提取码获取效率提升10倍 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字化资源交互日益频繁的今天,百度网盘作为国内主流的文件分享平台,其提取码机制…...

【Kafka系列·入门第五篇】Kafka实操进阶:Topic/Partition管理 + 消息可靠性配置

大家好,接续上一篇《Kafka实操入门:环境部署(Windows/Linux) 简单消息收发》,今天我们进入Kafka实操进阶环节——重点讲解Topic与Partition的日常管理、消息可靠性配置,以及新手常遇到的实操故障排查方法。…...

UNIT-00与Git工作流集成:智能提交信息生成与代码审查

UNIT-00与Git工作流集成:智能提交信息生成与代码审查 1. 引言 你有没有过这样的经历?项目临近上线,需要回溯某个功能修改的原因,结果发现提交记录里全是“fix bug”、“update”这样毫无信息量的描述,根本想不起来当…...

电商人必备!AI净界RMBG-1.4批量处理商品图,效率提升10倍

电商人必备!AI净界RMBG-1.4批量处理商品图,效率提升10倍 1. 电商人的痛点:每天被抠图折磨的日子 做电商的朋友,下面这个场景你一定不陌生: 早上9点,运营发来50张新款T恤的实拍图,要求今天下班…...

技术分享 | PG基于备份和WAL日志恢复数据

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

Youtu-VL-4B-Instruct快速上手:3个命令启动服务、5个API调用示例、10分钟掌握核心能力

Youtu-VL-4B-Instruct快速上手:3个命令启动服务、5个API调用示例、10分钟掌握核心能力 你是不是经常遇到这样的场景:拿到一张复杂的图表,想快速提取里面的数据;或者看到一张产品图,想知道里面有哪些东西、分别在哪里&…...

个人知识库管家:OpenClaw+Gemma-3-12b-it自动整理Obsidian笔记

个人知识库管家:OpenClawGemma-3-12b-it自动整理Obsidian笔记 1. 为什么需要自动化笔记整理 作为一个长期使用Obsidian管理技术笔记的用户,我发现自己逐渐陷入"收集容易整理难"的困境。每天新增的Markdown文档堆积在Vault文件夹中&#xff0…...

SiameseUIE中文-base实战教程:Python requests调用7860端口抽取接口示例

SiameseUIE中文-base实战教程:Python requests调用7860端口抽取接口示例 1. 引言:告别复杂配置,三步搞定信息抽取 你是不是也遇到过这样的场景?面对一堆非结构化的文本数据,比如新闻、报告、用户评论,想从…...

Windows Android子系统全栈指南:从技术原理到实战应用

Windows Android子系统全栈指南:从技术原理到实战应用 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA 价值定位:打破系统边界的跨平台…...

DeOldify移动端适配探索:基于Android的轻量级模型部署方案

DeOldify移动端适配探索:基于Android的轻量级模型部署方案 每次翻看家里的老相册,看到那些泛黄、褪色甚至模糊不清的照片,心里总会涌起一股想要“修复”它们的冲动。过去,这需要专业的软件和复杂的操作,但现在&#x…...

精通传感器融合:基于 KITTI 数据的 LiDAR 障碍物检测 — 第一部分

原文:towardsdatascience.com/sensor-fusion-kitti-lidar-based-obstacle-detection-part-1-9c5f4bc8d497?sourcecollection_archive---------4-----------------------#2024-12-25 如何使用 LiDAR 数据进行无监督学习的障碍物检测 https://medium.com/eroltak?s…...

实时手机检测-通用效果展示:手机在镜面反射/玻璃橱窗中的识别能力

实时手机检测-通用效果展示:手机在镜面反射/玻璃橱窗中的识别能力 1. 模型介绍与核心优势 实时手机检测-通用模型是一个专门用于检测图像中手机位置的高性能AI模型。这个模型基于先进的DAMO-YOLO框架开发,在检测精度和推理速度方面都表现出色。 与传统…...

用STM32F103C8T6+ESP8266做个公交车报站器,附完整电路图和代码(避坑OLED与GPS)

用STM32F103C8T6ESP8266打造高可靠性公交车报站器:从硬件选型到代码调试全指南 在智能交通系统快速发展的今天,公交车报站器作为乘客信息服务的重要载体,其稳定性和准确性直接影响出行体验。本文将带你从零开始,基于STM32F103C8T6…...

SpringBoot单元测试实战:从Service到Controller的Mock技巧全解析

SpringBoot单元测试实战:从Service到Controller的Mock技巧全解析 单元测试是保障代码质量的重要防线,但在实际开发中,许多团队往往因为时间压力或技术复杂度而忽视这一环节。SpringBoot作为Java生态中最流行的框架之一,其单元测试…...

Golang如何把日志写到文件_Golang日志文件教程【秒懂】

Go log包默认只输出到stderr,需用os.OpenFile创建*os.File(实现io.Writer)传给log.SetOutput;并发写安全但格式易乱;需手动flush或用bufio.NewWriter;长期运行需日志轮转等高级功能。Go 标准库的 log 包默认…...

如何排除AWR中的Idle Events_过滤不需要关注的网络等待与定时器

Idle Events是Oracle中wait_class为Idle的等待事件,如SQL*Net message from client等,它们反映客户端空闲状态而非数据库性能问题,若不剔除会干扰AWR分析、误导DBA定位假热点。什么是 Idle Events,为什么它们会干扰 AWR 分析awr 报…...

在Rockchip RK3588开发板上,用MPP库把H264视频转成YUV文件(附完整代码和避坑点)

在RK3588开发板上用MPP实现H264到YUV的高效解码实战 当我在RK3588开发板上第一次成功将H264视频流实时解码为YUV420SP格式时,那种成就感至今难忘。作为瑞芯微旗舰级芯片,RK3588的媒体处理能力在嵌入式领域堪称强悍,而MPP(Media Pr…...

自定义常用代码编辑快捷键大全

自定义适用、常用代码编辑快捷键通用编程快捷键代码提示快捷键文件操作快捷键编译器快捷键终端操作快捷键通用编程快捷键 格式化代码:Ctrl K注释/取消注释:Ctrl / , 添加注释:Ctrl shift /删除行代码:Ctrl D &…...

PyTorch 2.9 镜像部署全攻略:Jupyter和SSH两种方式任你选

PyTorch 2.9 镜像部署全攻略:Jupyter和SSH两种方式任你选 1. PyTorch 2.9 镜像概述 PyTorch 2.9 是一个开源的 Python 机器学习库,基于 Torch 库开发,底层由 C 实现,广泛应用于人工智能领域,特别是计算机视觉和自然语…...

测试用例模版与标准规范

一、测试用例通用模版(支持自动化生成与质量判定)字段名必填说明与格式要求自动化生成来源质量判定规则用例ID是{层级}_{类型}_{模块}_{序号}例:SYS_IT_ORDER_001自动生成唯一性、格式正则校验用例标题是[类型][正向/异常] 操作预期效果例&am…...

OpenTiny NEXT 从入门到精通·第 1 篇

OpenTiny NEXT 从入门到精通第 1 篇:启程篇——初识 OpenTiny NEXT,开启企业级智能前端之旅前端技术日新月异,Vue 2 要停止维护了,团队还在 Vue 2/3 多版本并存中挣扎;业务方希望接入 AI,前端却不知道怎么开…...

S2-Pro模型安全与合规应用指南:内容过滤与偏见缓解策略

S2-Pro模型安全与合规应用指南:内容过滤与偏见缓解策略 1. 企业级AI部署的安全挑战 当企业考虑部署S2-Pro这类大语言模型时,安全与合规问题往往成为首要考量。不同于个人使用场景,企业应用需要面对更严格的监管要求、更复杂的用户群体以及更…...

OpenTiny NEXT 从入门到精通·第 2 篇

OpenTiny NEXT 从入门到精通第 2 篇:组件篇——TinyVue 核心组件库深度实战组件库是前端应用的“乐高积木”。TinyVue 作为 OpenTiny 生态的核心 UI 组件库,拥有 130 企业级组件,覆盖中后台开发的绝大部分场景。但会用组件只是第一步&#xf…...

OpenClaw敏感数据处理:Qwen3-32B私有镜像的加密通信方案

OpenClaw敏感数据处理:Qwen3-32B私有镜像的加密通信方案 1. 为什么需要加密通信方案 上周帮朋友部署OpenClaw自动化财务对账流程时,遇到一个棘手问题:当系统自动处理银行流水和发票PDF时,这些敏感数据在传输过程中竟然以明文形式…...

计算机中级-数据库系统工程师-操作系统-进程管理(2)

一、死锁1. 死锁的定义现象描述: 指两个以上的进程互相都要求对方已经占有的资源,导致无法继续运行下去的现象。核心特征: 多个进程互相等待对方释放已获得的资源,导致所有进程都在无限等待。1)例题:死锁示例案例说明: 5个进程(A-E)每个需要4…...

QTQK-FJYJNDL-V137 远动及光伏群调群控装置技术介绍

一、产品概述QTQK-FJYJNDL-V137 群调群控装置由福建亿捷能电力科技公司自主研发,主要应用于光伏电站、风电场、储能电站、配电站等各类分布式电源场景,是一款专用的边缘计算与调控设备。该装置可实现现场测控装置、保护装置、逆变器、储能变流器等设备的…...

IBGP全互联实验+路由反射实验

知识点回顾IBGP全互联路由反射器实验先做IBGP全互联实验查看OSPF邻居关系R1上查看BGP邻居在R2上查看BGP邻居在R3上查看BGP邻居在R5上查看BGP邻居在R4上查看是否有去往10.10.5.5的路由在R5上查看是否有去往10.10.4.4的路由现在网络就能通了再做路由器反射实验在R1上跟R3上删除BG…...