函数的形参与实参间的数据传递
2015-07-19 16:18
369 查看
形参:函数定义时,函数名后的括号内的参数。
实参:函数调用时,函数名后的括号内的参数。
关于形参和实参的说明:
1.在该函数未被调用时,函数定义中的形参未被分配内存单元
2.在函数调用时,形参才会被分配内存单元,即新建一个变量接收实参的值,将实参复制了,在函数中进行相应的处理,而不影响实参的值(即使实参名与形参名相同时)。如本程序在函数add中,对形参a,b进行自增操作后,分别为2,3;而实参值仍为1,2,保持不变。形参的地址为14f6d8、14f6dc,而实参的地址为14f7e0,14f7d4,明显不是相同的变量。在函数调用结束后,会释放形参存储的单元。
实参:函数调用时,函数名后的括号内的参数。
//验证形参与实参同名时,对形参修改,实参值是否会变化 //分别查看形参和实参的地址 #include<stdio.h> #include<stdlib.h> int add(int a, int b)//实现两数相加 { int result; int *funaadd,*funbadd; funaadd=&a;//取形参地址 funbadd=&b; printf("funaadd=%d,funbadd=%d\n",funaadd,funbadd); result=a+b;//求和 a+=1;//改变形参的值 b+=1; printf("funa=%d,funb=%d\n",a,b); return (result); } void main() { int a,b,c; int *aadd, *badd; aadd=&a; badd=&b; printf("mainaadd=%d,mainbadd=%d\n",aadd,badd); printf("please enter two integer a,b\n"); scanf("%d,%d",&a,&b);//键入两个数 c = add(a,b);//求和 printf("maina=%d,mainb=%d\n",a,b); printf("%d+%d=%d\n",a,b,c); getchar(); system("pause"); }
关于形参和实参的说明:
1.在该函数未被调用时,函数定义中的形参未被分配内存单元
2.在函数调用时,形参才会被分配内存单元,即新建一个变量接收实参的值,将实参复制了,在函数中进行相应的处理,而不影响实参的值(即使实参名与形参名相同时)。如本程序在函数add中,对形参a,b进行自增操作后,分别为2,3;而实参值仍为1,2,保持不变。形参的地址为14f6d8、14f6dc,而实参的地址为14f7e0,14f7d4,明显不是相同的变量。在函数调用结束后,会释放形参存储的单元。
相关文章推荐
- Win7下SQLite安装配置与使用方法详解
- win7下qt+opencv的环境配置
- 神经网络
- listview实现分页效果(底部正在加载样式)
- 你必须知道的指针基础-4.sizeof计算数组长度与strcpy的安全性问题
- c#生成图片验证码
- 兼容性问题
- C++之deque
- C++之deque
- java分派
- 准确率P 召回率R
- 结构体中定义函数指针
- 2.1 Python是如何进行内存管理的?
- SQL脚本积累之五-----Oracle循环示例
- 结构体中定义函数指针
- Best Time to Buy and Sell Stock
- 黑马程序员—— 5,继承,子父类,抽象类,接口,final,模板设计
- hdu 1312 Red and Black
- Java应用程序利用Exe4j打包exe文件
- iOS之新建工程上下出现黑色块