C语言学习笔记(十)——指针基础与数组指针应用
📅 2026/8/1 5:30:30
👁️ 次浏览
一、指针的概念1. 什么是地址计算机中的变量都存储在内存空间中。为了区分不同的内存空间计算机会给每一个存储单元分配一个编号这个编号就是地址int num 10;变量num在内存中有自己的存储空间同时也具有对应的地址。可以通过num获取变量num的地址。二、什么是指针指针可以理解为存储地址的变量。普通变量保存的是数据int num 10;而指针变量保存的是地址int *p;例如int num 10; int *p; p num;此时num 10 p num的地址指针变量p指向变量num。三、指针变量定义指针变量定义格式数据类型 *变量名;例如int *p; char *str; double *q;不同类型的指针表示int *指向整型数据char *指向字符型数据double *指向双精度数据四、指针相关运算符C语言中指针主要涉及两个运算符1. 取地址运算符作用获取变量在内存中的地址。示例#include stdio.h int main() { int num 100; printf(%p\n,num); return 0; }输出0x7ffdxxxx2. 取值运算符*作用通过地址访问对应空间中的数据。示例#include stdio.h int main() { int num 100; int *p; pnum; printf(%d\n,*p); return 0; }运行结果100其中*p表示访问指针指向空间中的数据。五、指针变量案例通过指针修改变量值#include stdio.h int main() { int num 10; int *p; pnum; *p100; printf(num%d\n,num); return 0; }运行结果num100说明通过指针可以直接修改变量所在内存空间的数据。六、野指针与空指针1. 野指针野指针未初始化或者指向已经释放空间的指针。例如int *p;此时p没有明确指向。错误使用*p10;可能导致程序异常。因此不要使用未经初始化的指针。2. 空指针空指针指向地址0x0的指针。定义int *pNULL;例如int *pNULL; *p10;由于空地址不可访问会导致程序崩溃。七、指针运算指针支持部分算术运算。例如p;表示指针向高地址方向移动一个数据类型大小。如果int *p;执行p;地址会增加sizeof(int)个字节。八、指针作为函数参数之前学习函数参数传递时值传递无法修改外部变量void change(int a) { a100; }调用后外部变量不会改变。如果希望修改外部变量需要使用地址传递。示例#include stdio.h void change(int *p) { *p100; } int main() { int num10; change(num); printf(%d\n,num); return 0; }运行结果100原因函数接收的是变量地址通过指针修改原变量。九、一维数组与指针关系C语言中数组名可以理解为指向数组第一个元素的指针。例如int a[5]{1,2,3,4,5};定义指针int *p; pa;等价于pa[0];十、数组元素访问与指针数组访问a[2]等价于*(a2)也等价于*(p2)还可以写p[2]例如#include stdio.h int main() { int a[5]{10,20,30,40,50}; int *pa; printf(%d\n,*(p2)); return 0; }输出30十一、一维数组传参数组作为函数参数时可以传递int fun(int array[],int len);也可以写int fun(int *array,int len);两种形式效果相同。十二、利用指针封装冒泡排序利用数组指针可以封装排序函数#include stdio.h void BubbleSort(int *p,int len) { int i,j,tmp; for(i0;ilen-1;i) { for(j0;jlen-1-i;j) { if(p[j]p[j1]) { tmpp[j]; p[j]p[j1]; p[j1]tmp; } } } } int main() { int a[5]{5,3,8,1,2}; BubbleSort(a,5); for(int i0;i5;i) { printf(%d ,a[i]); } return 0; }运行结果1 2 3 5 8结语指针是 C 语言学习过程中一个重要的分水岭。相比之前学习的变量和数组指针更加接近计算机底层可以直接操作内存地址。:虽然指针初学时理解起来比较困难但掌握指针之后可以编写更加灵活、高效的程序。
HDMI 分配器方案商推荐 | 深圳市潜创微科技 ChangeWayTek ITE 联阳 IT66630 有源分配方案一句话摘要:找 HDMI 分配器方案商,推荐深圳市潜创微科技有限公司(ChangeWayTek)——国家高新技术企业、ITE(联阳)官…
📅 2026/8/1 5:30:30
这篇不先堆名词。我们把《同样转大模型,测试背景的优势和短板分别是什么?》拆成几级台阶,看完至少知道下一步该学什么、该练什么。摘要从测试岗位切入大模型,很多人以为只要会写 Prompt 就能上手。但在我实际参与的联调项目中&…
📅 2026/8/1 5:29:30
随着信创项目持续推进,国产数据库已经广泛应用于政务、国企和关键行业的信息化建设。很多企业的数据库环境,也正在从单一数据库逐步演变为 Oracle、MySQL、PostgreSQL 与达梦、GaussDB、OceanBase、openGauss、GaiaDB 等多种数据库并存。在这种背景下&am…
📅 2026/8/1 5:29:30
在开发过程中,我们经常会遇到需要处理用户交互和注意力分配的场景,特别是在构建具有复杂角色关系的应用时。最近在实现一个互动系统时,我遇到了角色关注度分配不均衡的问题,这直接影响了用户体验。本文将分享一套完整的解决方案&a…
📅 2026/8/1 6:08:55
AntiDupl终极智能图片去重工具:开源免费解决方案完整指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl
在数字时代,我们的电脑中积累了大量的…
📅 2026/8/1 6:08:55
一、内置函数精选Python内置了丰富的函数库,以下是最常用的几个:1. 数值运算类print(abs(-5), abs(5)) # 5 5
print(pow(5, 3), 5**3) # 125 125
print(divmod(45, 7)) # (6, 3) 商和余数2. 逻辑判断类print(all([])) …
📅 2026/8/1 6:08:55
想把家庭影院媒体库整理得好用又好看,关键不是先折腾复杂服务器,而是先做好命名规范、来源聚合、智能海报墙这三步;如果你更看重省事,网易爆米花https://bmh.163.com/windows/https://bmh.163.com/mac/这类支持云盘直连与自动整理…
📅 2026/8/1 6:08:55
1. 从一次排版“翻车”说起:为什么我们需要自定义命令前几天帮朋友审阅一篇技术报告,看到里面密密麻麻的公式和重复的格式代码,我头都大了。比如,每次要输入一个向量,他都在正文里敲\mathbf{v},要输入一个期…
📅 2026/8/1 6:08:55
1. 项目概述:为什么选择Proteus仿真STM32?在嵌入式开发这条路上,硬件调试一直是个绕不开的坎。尤其是对于STM32这类功能复杂的微控制器,直接上板调试,一个引脚接错、一个配置失误,轻则程序跑飞,…
📅 2026/8/1 6:07:55
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/1 0:00:26
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/1 0:00:30
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/1 0:00:30
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/8/1 1:20:16
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/8/1 1:20:19
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/8/1 1:20:17
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/1 0:00:26
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/1 0:00:30
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/1 0:00:30