C学习笔记(十一):指针详解
一、为什么需要指针普通变量保存的是数据本身。例如int a 10;变量a中保存10但是计算机在内存中存储数据时每个数据都有自己的存储位置。例如内存 地址 数据 0x1000 10其中10是数据0x1000是数据存储的位置。这个位置称为地址。指针的作用通过地址直接访问内存空间。因此指针可以让程序更高效更灵活更方便地操作内存。二、内存地址1. 什么是地址计算机为了区分不同的内存空间会给每个内存空间编号。这个编号就是内存地址。例如地址 数据 1000 20 1004 30程序通过地址找到对应的数据。2. 内存按字节编址计算机中的内存按字节进行编号。例如0x0000 0x0001 0x0002 0x0003 ...每一个地址对应一个字节空间。三、指针的概念1. 什么是指针指针可以理解为地址。地址就是指针。例如变量int a 10;假设a所在地址 0x1000那么0x1000就是变量a的指针。2. 指针变量用于保存地址的变量称为指针变量。例如int *p;表示定义一个指向int类型数据的指针变量p。关系普通变量 a ↓ 保存数据10 指针变量 p ↓ 保存地址0x1000四、取地址运算符 1. 功能获取变量的地址。例如int num 10; printf(%p,num);输出num的地址2. 使用规则只有左值才能进行取地址操作。例如正确a错误10原因常量没有存储空间。3. 类型变化例如int a;a类型int执行a之后类型变为int *即int类型指针。五、取值运算符 *1. 功能*根据地址访问对应空间的数据。例如int a10; int *pa;此时p ↓ a的地址使用*p表示访问a中的数据。结果102. 修改变量值例如int a10; int *pa; *p20;执行后a变为20原因*p代表p指向的空间。3. 类型变化例如int *p;执行*p类型int即指针类型降级。六、指针变量定义格式数据类型 *变量名;例如int *p; char *q; float *r; double *s;表示不同类型的指针。指针变量大小无论什么类型int * char * float * double *指针变量本身大小都是8字节因为保存的是地址。七、野指针1. 什么是野指针野指针未初始化的指针或者指向已经释放空间的指针。例如int *p; *p10;此时p没有指向有效空间。程序可能崩溃。2. 如何避免定义指针后不要直接使用。应该int a; int *pa;或者int *pNULL;八、空指针 NULL空指针指向地址0的指针。例如int *pNULL;表示p暂时不指向任何有效空间。注意不能*p10;因为NULL地址不可访问。会导致程序崩溃。九、指针类型不同类型指针int *p; char *p; float *p; double *p;区别指向空间的数据类型不同。例如int *p;表示p指向4字节整数空间。十、指针的算术运算指针支持指针相减1. 指针例如int *p; p;不是增加1字节。而是增加sizeof(int)个字节。例如int占4字节地址 1000 ↓ 10042. 指针--类似向低地址移动。3. 指针相减例如p1-p2得到两个地址之间相差多少个元素。十一、指针操作指针有两种操作方式。1. 修改指针本身例如pb;改变p的指向。2. 修改指针指向的数据例如*p100;改变指向空间中的值。示例int a100; int b200; int *pa; pb;改变p指向b。而*p300;改变b的值。十二、指针作为函数参数前面学习函数传参默认是值传递。1. 值传递例如void change(int a) { a100; }调用int x10; change(x);结果x仍然是10因为形参只是副本。2. 地址传递如果想修改外部变量需要传地址。例如void change(int *p) { *p100; }调用int x10; change(x);执行后x100地址传递作用修改函数外部变量一个函数返回多个结果。十三、数组与指针关系C语言中数组名本质上是指向数组第一个元素的指针常量。例如int a[5]{1,2,3,4,5};数组名a等价于a[0]例如int *pa;表示p指向数组第一个元素。访问a[2]等价于*(a2)也等价于*(p2)十四、一维数组指针传参数组作为函数参数例如int fun(int array[],int len);等价于int fun(int *array,int len);示例冒泡排序函数void BubbleSort(int *array,int len) { }调用BubbleSort(a,10);数组地址传入函数。注意数组传参时函数中操作的数组和外部数组是同一个空间。因此可以直接修改数组内容。

相关新闻

外贸客户拖欠货款风险上升:BBWEYY GEO如何优化客户来源结构,含零代码SAAS、AI编程、源码定制交付

外贸客户拖欠货款风险上升:BBWEYY GEO如何优化客户来源结构,含零代码SAAS、AI编程、源码定制交付

外贸经营风险对比分析 外贸客户拖欠货款风险上升:BBWEYY GEO如何优化客户来源结构 通过内容吸引重视专业与长期合作的客户 核心结论 GEO不能消除坏账,但可以通过专业内容和明确条件减少只关注赊销与低价的客户进入销售流程。 一、问题为什么越来越突…

2026/10/13 19:38:03 阅读更多 →
OpenAI GPT Transcribe非流式语音转录模型:高精度音频转文字技术解析与实践

OpenAI GPT Transcribe非流式语音转录模型:高精度音频转文字技术解析与实践

OpenAI 最新发布的 GPT Transcribe 非流式语音转录模型,为语音转文字领域带来了新的技术突破。这个模型专门针对高精度、非实时场景的音频转录需求设计,在准确率和长音频处理能力上表现出色。从官方信息来看,GPT Transcribe 的核心优势在于其…

2026/10/11 19:11:07 阅读更多 →
枚举基础用法详解

枚举基础用法详解

// 枚举基础用法:声明、赋值、输出、比较和switch控制 enum Apple {Jonathan, GoldenDel, RedDel, Winesap, Cortland }class EnumDemo {public static void main(String args[]) {Apple ap Apple.RedDel;System.out.println("Value of ap: " ap); // 输…

2026/10/13 15:58:42 阅读更多 →

最新新闻

PT对称系统在COMSOL中的仿真与应用研究

PT对称系统在COMSOL中的仿真与应用研究

1. 项目背景与核心价值在光学和电磁学领域,PT对称系统(Parity-Time Symmetric Systems)正成为前沿研究热点。这种特殊结构最早由量子力学领域提出,近年来在经典波系统中实现了突破性应用。我们团队使用Comsol Multiphysics对波导、…

2026/10/14 3:42:39 阅读更多 →
AI 智能搜索:Baklib 让回答先有出处

AI 智能搜索:Baklib 让回答先有出处

客服机器人被问到退货规则,把过期 PDF、聊天记录和一篇旧博客拼成一句听起来完整的话。期限张冠李戴,还编出公司从未提供过的办理方式。听起来合理,并不等于可执行。智能体要稳定工作,先要有可验证的知识,而不是更大的…

2026/10/14 3:42:39 阅读更多 →
DBeaver 高阶实战:可脚本化SQL工作流与CI/CD集成指南

DBeaver 高阶实战:可脚本化SQL工作流与CI/CD集成指南

简介:本资源是一份面向数据库开发人员与DBA的DBeaver高效使用指南,聚焦日常高频操作场景,解决工具上手难、查询效率低、SQL编写重复等问题。内容涵盖表结构查看(通过‘打开声明’获取列注释与CREATE语句)、查询性能调优…

2026/10/14 3:42:39 阅读更多 →
拼接屏3D仿真计算器:从原理到实战

拼接屏3D仿真计算器:从原理到实战

1. 引言拼接屏3D仿真计算器是一款面向大屏拼接项目的辅助工具,用于在部署前模拟拼接屏的物理布局、分辨率分配和3D视觉效果。它帮助工程师在方案设计阶段快速验证拼接墙的尺寸、单元数量、缝隙影响以及观看距离,从而降低现场返工成本。本文将从拼接屏的基…

2026/10/14 3:42:39 阅读更多 →
Unity模拟经营游戏时间系统设计:状态机+Timeline+事件总线

Unity模拟经营游戏时间系统设计:状态机+Timeline+事件总线

简介:本资源是一款基于Unity引擎开发的类《星露谷物语》模拟经营游戏《Starland-Time》完整工程包,面向Unity初学者与独立游戏开发者,提供可学习、可调试、可拓展的模拟经营类项目实践范例。压缩包共572个文件,含343个C源码&#…

2026/10/14 3:42:39 阅读更多 →
带同时取送货的车辆路径问题(VRPSDP)建模与模拟退火求解MATLAB实现

带同时取送货的车辆路径问题(VRPSDP)建模与模拟退火求解MATLAB实现

做物流配送优化的人,十有八九遇到过这种场景:同一个客户点,既要给你送一箱新货,又要让你从他那儿拉走一箱退货或者回收品。如果你把这个问题当成普通的车辆路径问题(VRP)去处理,八成会翻车&…

2026/10/14 3:41:38 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →