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

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

http://www.xdnf.cn/news/6757.html

相关文章:

  • 后端框架(3):Spring(1)
  • 【技术原理】ELK技术栈的历史沿革与技术演进
  • Linux——一键部署应用脚本
  • 方法区与元空间解析
  • 软件架构风格系列(2):面向对象架构
  • (网络文件系统)N
  • 本地部署Scratch在线编辑器
  • Ngrok 配置:实现 Uniapp 前后端项目内网穿透
  • Recycling Krylov Subspace 方法解释与开源实现
  • 【Arthas实战】常见使用场景与命令分享
  • 电子电路:电容在电子电路中到底发挥着什么作用?
  • Unity 批量将图片从默认类型改为Sprite类型
  • 数字金融发展对商业银行信用风险的影响研究(stata分析范文)
  • 描述性统计图表
  • HC32L190 ADC采集
  • firewall防火墙
  • 前端方法的总结及记录
  • 隧道结构安全在线监测系统解决方案
  • 探秘雷克赛恩生产基地:解码国产投影技术深耕之路
  • 动态规划-63.不同路径II-力扣(LeetCode)
  • 操作系统知识总结
  • 丝杆升降机最大载荷的工程力学解析与选型实践
  • 懒汉式单例模式的线程安全实现
  • ros2中自定义的package查不到?
  • 事件响应策略规范模版
  • 基于Unity的简单2D游戏开发
  • [特殊字符] 如何优雅地避免 SQL 多表 LEFT JOIN 造成的笛卡尔积放大问题?
  • springboot连接高斯数据库(GaussDB)踩坑指南
  • 杰理ac696配置mic
  • 二水平设计的单次重复