/*
.*Copyright (c) 2014,烟台大学计算机学院
*All right reserved.
*文件名称:函数参数传递的三种方式.cpp
*作者:彭子竹
*完成日期:2015年9月11日
*版本号:v1.0
*
*问题描述:编写能够交换两个变量的swap函数的三个版本。
*程序输入:待交换的的两个整数。
*程序输出:交换后的结果。
*/ 

(1)传值

#include<stdio.h>
void myswap(int *,int *);
int main()
{
int a, b;
printf("请输入待交换的两个整数:");
scanf("%d %d", &a, &b);
myswap(&a,&b);
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}  
void myswap(int x, int y)
{
int t;
t=x;
x=y;
y=t;
}

运行结果:

·结果:第一种方法显然没有传值成功,这种方法没有对实参进行操作,虽然改变了形参,但是实参不会改变。

(2)传地址

#include<stdio.h>
void myswap(int *,int *);
int main()
{
int a, b;
printf("请输入待交换的两个整数:");
scanf("%d %d", &a, &b);
myswap(&a,&b);
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
void myswap(int *p1, int *p2)
{
int  t;
t=*p1;
*p1=*p2;
*p2=t;
}

运行结果:

结果:第二种方法成功进行了交换。地址传递把实参的存储地址传送给对应的形参,使形参指针和实参指针指向同一个地址。所以,形参改变实参也会相应改变。

(3)引用作形参

#include<stdio.h>
void myswap(int *,int *);
int main()
{
int a, b;
printf("请输入待交换的两个整数:");
scanf("%d %d", &a, &b);
myswap(&a,&b);
printf("调用交换函数后的结果是:%d 和 %d\n", a, b);
return 0;
}
void myswap(int &x, int &y)
{
int t;
t=x;
x=y;
y=t;
}

运行结果:

结果:

第三种方法进行了交换。把引用作为参数,形参的任何变化实参都会发生变化,而且比第二种方法更简便。引用传递方式是在函数定义时在形参前面加上引用运算符“&”。

知识点总结:

通过运行结果对比,加深了我对这三种方式的理解,避免出现第一种方法的错误。

学习心得:

我直接复制的原程序,根本没检查一边,结果主函数没声明交换函数,所以运行的三种结果都是错的。所以粗心是我以后要攻克的难关。

第二周项目1函数参数传递的三种方式相关推荐

  1. 项目1- C/C++语言中函数参数传递的三种方式

    <span style="font-size:18px;">问题及代码:</span> <span style="font-size:18p ...

  2. python中函数参数传递的三种方式_python中函数参数传递的几种方法

    转自  http://www.douban.com/note/13413855/ Python中函数参数的传递是通过"赋值"来传递的.但这条规则只回答了函数参数传递的"战 ...

  3. 第2周项目1c++语言中函数参数传递的三种方式

    copyright (t) 2017,烟台大学计算机学院*All rights reserved.*文件名称:1.cpp*作者:邵雪源*完成日期:2017年9月7日*版本号:v1.0 */ #incl ...

  4. c/c++语言中函数参数传递的三种方式——徐吉平

    此篇为本人处女作,希望大家多多指正 1.这是c/c++中的函数传值方式,函数中只交换了 形参x,y的数值,而实参a,b的值并没有发生变化 #include <stdio.h> void m ...

  5. 二维数组作为函数参数传递的三种方式

    指针 1.形参声明为二维数组 2.形参声明为一级指针 3.形参声明为二级指针 指针 关于指针的介绍和基础应用推荐一位B站up主的视频 [C指针]十分钟.你要是听不懂.我当场就把这个编译器- 1.形参声 ...

  6. 【❗划重点!C语言函数参数传递只有两种方式(值传递,地址传递),不支持“引用传递”!❗】

    引子 上篇文章<C语言函数传参の结构体数组篇>提到了C语言的函数参数传递方式,百度了一一一大圈,有说两种的,也有说三种的,简直把我搞晕了,"值传递和地址传递"是毫无疑问 ...

  7. 汇编-子程序参数传递的三种方式-寄存器法,堆栈法,参数赋值法【详述后两者】

    汇编-子程序参数传递的三种方式: 寄存器法,堆栈法,参数赋值法 子程序结构如下: 名称 PROC FAR|NEAR;DO SOMETHINGRET [N];返回断点地址,N可忽略,加了必须对SP进行 ...

  8. SpringBoot项目实现多数据源的三种方式

    在开发过程中,我们经常被要求在一个项目中使用多数据源下面是总结下,使用多数据源的几种方式: 方式一:在同一实例下的不同数据库(在写SQL的时候用(数据库名称+"."+表名)) 方式 ...

  9. python函数参数传递的两种方式_Python函数的参数传递方式

    Python函数的参数传递方式 一.普通 def add(a,b): return a+b print(add(1,2)) #输出结果:3 二.可选参数 def myjoin(string,sep=' ...

最新文章

  1. 腾讯Elasticsearch海量规模背后的内核优化剖析
  2. 世界-中国-省-市-县 天气预报
  3. 【⚠️阴沟里翻船,这题都做错了!⚠️】C语言宏定义
  4. Java基础之抽象类
  5. dj鲜生-18-发送邮件功能
  6. CVPR 2021 图像压缩最新进展
  7. 90-30-020-源码-任务调度-Kylin任务调度
  8. 模糊逻辑学习--建立Mamdani系统(GUI)
  9. hbuilder新建web apk项目_【CUCS】Ionic利用你喜欢的(html css js) web技术创建跨平台的移动app...
  10. marquee标签制作轮播图
  11. server is DOWN now, please try again later!
  12. 分享一个强大的弹出框
  13. Android框架揭秘-Android Service Framework
  14. PDF文档太大怎么办?
  15. 乐优商城之后台管理系统的环境搭建(七)
  16. 国网项目汇总(ECP)
  17. 《神经科学:探索脑》学习笔记(第5章 突触传递)
  18. PPT插件(VSTO)开发入门
  19. java每日打卡_“365算法每日学计划”:03打卡-贪心算法
  20. 第一回 开篇 D3D渲染流程简介

热门文章

  1. C# 如何添加、格式化、删除Word超链接
  2. [转]Magento刷新索引的几种方法
  3. 北京雾霾指数再度爆表!创业者们已经纷纷逃离北京
  4. html根据矩形确定四值坐标,熬夜总结了 “HTML5画布” 的知识点(共10条)
  5. qt Qt Table Widget item 设置 选中 透明色
  6. 一个实现批量抓取淘女郎写真图片的爬虫
  7. 一文彻底搞懂I/O多路复用及其技术
  8. 2个月Java学习总结
  9. 科研 | Link16数据链——信息化战争的神经中枢
  10. 基于linux epoll网络编程细节处理丨epoll原理剖析