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

C语言| 拷贝传递(指针控制内存单元)

【程序代码1】

这个程序执行后不能交换i和j的值。
因为实参和形参之间的传递是单向的,只能由实参向形参传递。
被调函数调用完之后,系统为其分配的内存单元都会被释放。
所以虽然将i和j的值传给了a和b,交换的只是a和b内存单元的数据,对i和j没有任何影响。

【拷贝传递】将内存A中的值拷贝到内存B中。
拷贝传递的结果是:
不管如何改变内存B中的值,对内存A中的值都没有任何影响,因为它们两个是不同的内存空间。

【程序代码2】指针控制内存单元

此时实参向形参传递的是变量i和j的地址。
被调函数调用完,释放p和q的内存单元,
而p和q存放的是i和j的地址,可以进行拷贝传递。

[形参] 变量名为p和q,变量类型为int *型。
[实参] i和j;&i传递给p, &j传递给q。

#include <stdio.h>

void JH(int *p, int *q); //函数声明

int main(void)
{
    int i = 22, j = 33;
    printf("i = %d, j = %d\n", i, j);

    JH(&i, &j);

    printf("调用函数之后 i = %d, j = %d\n", i, j);
    
    return 0;
}

void JH(int *p, int *q)
{
    int temp;
    
    temp = *p;
    *p = *q;
    *q = temp;
    
    return;
}

相关文章:

  • 网站备案查询官网大数据精准客户
  • 拍拍网的网站建设公司网站制作要多少钱
  • 企业网站规划与开发宁德市
  • 物流网站建设方案网络营销渠道可分为
  • 佛山网站建设兼职seo高级优化方法
  • 策划网站有哪些磁力链搜索引擎入口
  • ROS2学习(12)------ROS2 分布式通信说明
  • 深入解析Spring Boot与Spring Security整合实现JWT认证
  • Vue 前端全方位性能优化指南
  • Java常用API
  • WireShark网络抓包—详细教程
  • uni-app学习笔记十五-vue3中defineExpose的使用
  • Linux系统编程-DAY05
  • 鸿蒙OSUniApp 开发带有通知提示的功能组件#三方框架 #Uniapp
  • Vue 样式穿透(深度选择器)::v-deep
  • 如何轻松地将文件从 iPhone 传输到 PC
  • 软件测试过程中如何定位BUG
  • 华为云Flexus+DeepSeek征文|依托华为云生态:Dify 平台 AI Agent 开发的场景化实践
  • 基于小米Open-Vela开源系统的高级计算器实现 | 支持C++数学函数与 LVGL UI
  • 使用docker容器部署Elasticsearch和Kibana
  • maven模块化开发
  • C语言学习笔记二---v
  • python截取grafana监控面板生产巡检图片
  • idea中使用Maven创建项目
  • maven中的grpc编译插件protobuf-maven-plugin详解
  • LlamaFirewall:开源框架助力检测与缓解AI核心安全风险