函数的调用:形参与实参
来源:互联网 发布:手机简谱制作软件 编辑:程序博客网 时间:2024/04/28 08:20
我曾经写过这样一个用于交换两个变量的函数:
#include <cstdio>using namespace std;int a[1001];void swap(int x,int y ) //错误!!!{ int t; t = x; x=y; y=t;}int main(){ a[0]=1,a[1]=2; swap(a[0],a[1]); printf("%d %d",a[0],a[1]); return 0;}
运行后发现并没有起到应有的功能。事实上形参把实参的数据复制过来后,确实交换了,但没有返回值,形参的值也不传递给实参(参数的传递是单向值传递)。主函数中的值并没有发生改变。
a[0]、a[1]实质上只把值传递给了交换函数,换来换去只是a、b两个值交换了。主函数中由于数组是全局变量因此可以用下面这种方法:
#include <cstdio>using namespace std;int a[1001];void swap(int x,int y ){ int t; t = a[x]; a[x]=a[y]; a[y]=t;}int main(){ a[0]=1,a[1]=2; swap(0,1); printf("%d %d",a[0],a[1]); return 0;}
传递的是俩个下标,在交换函数中交换的却是全局变量a[0]与a[1]。
也可以用指针来传递地址,然后把该地址存储的值交换:
#include <cstdio>using namespace std;int a[1001];void swap(int *x,int* y ){ int t; t = *x; *x=*y; *y=t;}int main(){ a[0]=1,a[1]=2; swap(&a[0],&a[1]); printf("%d %d",a[0],a[1]); return 0;}
调用函数传递实参也可以这样写:
swap(a,a+1);
0 0
- 函数的调用:形参与实参
- 函数的形参与实参的关系
- C语言----函数的形参与实参
- 1.4a函数的形参与实参
- 函数形参与实参的一些总结
- 函数_调用指针交换函数(形参与实参)
- h5 哥德巴赫猜想验证、函数和数组、函数的调用、形参与实参、参数的传递
- Javascript函数形参与实参
- Javascript函数形参与实参
- 函数的定义方式 及 函数的形参与实参
- Java的形参与实参
- 形参与实参的区别
- 形参与实参的区别
- 形参与实参的纠葛
- 形参与实参的区别。
- 形参与实参的区别
- 函数的形参与实参间的数据传递
- 指针-形参与实参-函数传参
- LeetCode | Binary Tree Postorder Traversal
- 数据结构实验之二叉树一:树的同构
- (LA 3942)Remember the Word --DP+Trie树
- 数据库索引
- 数据库增加表与更新字段语法 GREENDAO
- 函数的调用:形参与实参
- 备用代码
- Unity3D游戏开发之飞机大战项目讲解,食用攻略
- 内存泄漏原因概览
- Hdu 3696 Farm Game(最长路)
- 如何实现一个malloc
- 配置Linux下的Tomcat出现的错误
- Android调用相机及使用图库截取图片
- 260.leetcode Single Number III(medium)[两个单数]