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

C41-为什么要用指针

一 原因一

  • 在封装函数内,由于形参与实参在数据传递上是单向的,无法修改主函数的变量值,需要引入指针
    • 我们以封装一个交换数据的函数为例

引入指针前

  • 代码示例:
#include <stdio.h>//封装函数
void ChangeData(int data1,int data2)
{int temp;temp=data1;data1=data2;data2=temp;
}//主函数
int main()
{   //变量初始化int data1=10;int data2=20;//打印交换前printf("交换前:data1=%d,data2=%d\n",data1,data2);//调用交换函数ChangeData(data1,data2);//打印交换后printf("交换后:data1=%d,data2=%d\n",data1,data2);return 0;
}
  • 成果展示:

image-20250516194112638

我们发现,结果中数据并未交换成功

引入指针后

  • 代码示例:
#include <stdio.h>//封装函数
void ChangeData(int *p_data1,int *p_data2)
{int temp;temp=*p_data1;*p_data1=*p_data2;*p_data2=temp ;
}//主函数
int main()
{   //变量初始化int data1=10;int data2=20;//打印交换前printf("交换前:data1=%d,data2=%d\n",data1,data2);//调用交换函数ChangeData(&data1,&data2);//打印交换后printf("交换后:data1=%d,data2=%d\n",data1,data2);return 0;
}
  • 成果展示:

image-20250516194600450

二 原因二

  • 在嵌入式领域,用于指向固定的内存地址

果展示:

[外链图片转存中…(img-tXw8Wmpk-1747398970800)]

二 原因二

  • 在嵌入式领域,用于指向固定的内存地址

如:image-20250516203146254

相关文章:

  • ubuntu环境下 基于Python 打包的 批量命令行可视化操作工具 GUI
  • Vue3项目使用ElDrawer后select方法不生效
  • 分布式 ID 生成的五种方法:优缺点与适用场景
  • 【C++】 —— 笔试刷题day_29
  • 界面控件DevExpress WinForms中文教程:Banded Grid View - API
  • 项目依赖版本修改
  • TensorFlow/Keras实现知识蒸馏案例
  • Tor推出Oniux新工具:为Linux应用提供网络流量匿名化
  • Graph Representation Learning【图最短路径优化/Node2vec/Deepwalk】
  • PR-2021
  • android 安装openwrt 安正步骤
  • Kotlin与Java的融合趋势:从互操作到云原生实践
  • 《解锁数字藏品交易系统的底层密码:区块链架构抉择》
  • Spring Boot循环依赖的陷阱与解决方案:如何打破“Bean创建死循环”?
  • 在 Visual Studio Code (VSCode) 中配置 MCP(Model Context Protocol)
  • 网络流量分析 | NetworkMiner
  • 【数据开发】埋点体系的讲解 - 埋点方式、原理、优缺点
  • 2025 家用投影新标杆:雷克赛恩 CyberPro1 如何重新定义客厅观影体验
  • 平衡智慧在日常生活中的落地实践:构建和谐生活的行动指南
  • Netty总结
  • 篮球培训机构东方启明星被指停摆,家长称已登记未退费用超百万
  • “走进书适圈”:一周城市生活
  • 烤肉店从泔水桶内捞出肉串再烤?西安未央区市监局:停业整顿
  • 外企聊营商|武田制药:知识产权保护助创新药研发
  • 中国证券业协会修订发布《证券纠纷调解规则》
  • 马上评|这种“维权”已经不算薅羊毛,涉嫌犯罪了