A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© bling的女汉子 中级黑马   /  2015-8-20 19:47  /  1440 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

函数的参数的传递过程不是很清楚,形参与实参之间是怎么传递值的

6 个回复

正序浏览
简单点说,形参是函数后面()里面的参数,实参就是你调用函数的时候给他传的值
回复 使用道具 举报
地址传递和值传递
回复 使用道具 举报
补充一下楼上所说,

传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。

传址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。

传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。

说几点建议:
如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。
因而如果int,char等固有类型,而是你自己定义的类或结构等,都建议传指针或引用,因为他们不会创建新的对象。
回复 使用道具 举报
分为地址的传递和值的传递
回复 使用道具 举报
例子如下:
void change(int n);
int main()
{
    int a=10;                                 //执行到此,为a变量分配一块内存空间,地址为: 0x7fff5fbff7e8
    change(a);                           //调用change函数,传递a变量的值,就是两个变量 a 和 n,传递参数过程就是好像 n=a,这么一个过程。
    return 0;
}

void change(int n)
{
    n=10;                                      //n为形参,也可以理解成一个变量,它也有自己的地址:0x7fff5fbff7c8
}
回复 使用道具 举报
其实要理解局部变量,应该就能很好的理解形参和实参。局部变量就是{}里面的变量{}结束后那个变量就被销毁了,
举个栗子
在main函数中 定义两个局部变量 int a = 5; int b = 6; 然后定义一个方法 int add(int a, int b){ return a+b} 在主函数中调用这个方法并赋值给c int c = add(5,6)
当在主函数调用add(5,6)这个方法时,会进入int add(int a, int b)这个函数,这个函数中的a和b并不和主函数中的a和b在同一个存贮单元,可以理解为复制了一份给了函数int add(int a, int b)。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马