在C#中什么是形参、什么是实参?
答案:2 悬赏:80 手机版
解决时间 2021-01-23 01:19
- 提问者网友:战皆罪
- 2021-01-22 10:35
在C#中什么是形参、什么是实参?
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-01-22 11:07
其他语言都是一样的吧
main()
{ int a=1;
fun(a); // 这里的a ,传到fun函数里,在这里,这个a 是实参
}
fun( int b){
b=b+1; //这里的b ,是函数里面定义的,是形式参数,它接受调用时实参的值。
}
main()
{ int a=1;
fun(a); // 这里的a ,传到fun函数里,在这里,这个a 是实参
}
fun( int b){
b=b+1; //这里的b ,是函数里面定义的,是形式参数,它接受调用时实参的值。
}
全部回答
- 1楼网友:执傲
- 2021-01-22 11:26
形参:在定义函数中指定的参数就是形参,在未出现函数调用时,他们并不占内存中的存储单元,只有在发生函数调用时,函数中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。
实参:实参可以是常量、变量和表达式,但要求有确定的值。在调用时将实参的值赋给形参。在内存中,实参单元和形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留原值。
C#中有两种类型的数据,一种为值类型;另一种为引用类型。理解这两种数据类型,有利于进一步编程和实现。
他们最大的区别就是存储的位置不同,前者值类型存储在内存的堆栈中(一些书上面也说是【栈】),后者存储在内存堆中(一些书上面说是【堆】),栈中的内存不需要自己就能回收,内存堆中的数据需要.Net FrameWork 自己的内存清理机制进行回收。
值类型的数据传递参数的时候,默认情况下采用传递形参,实参的内容不变,如果想把实参传递过去,那么,在C#中只有通过ref关键字来实现。其实这里面的ref和c/c++中的地址引用差不多,具体原理没有深究,但是可以这么理解。
但是引用类型传递的时候是传递的内存的地址,也就是“传递实参”。所以有些时候就能够理解一些东西了。比如:DataSet传递时候,就是传递的“实参”。他也就是引用类型。
值类型不是很多,int float double char等。注意:string为引用类型。这个比较特殊。
实参:实参可以是常量、变量和表达式,但要求有确定的值。在调用时将实参的值赋给形参。在内存中,实参单元和形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留原值。
C#中有两种类型的数据,一种为值类型;另一种为引用类型。理解这两种数据类型,有利于进一步编程和实现。
他们最大的区别就是存储的位置不同,前者值类型存储在内存的堆栈中(一些书上面也说是【栈】),后者存储在内存堆中(一些书上面说是【堆】),栈中的内存不需要自己就能回收,内存堆中的数据需要.Net FrameWork 自己的内存清理机制进行回收。
值类型的数据传递参数的时候,默认情况下采用传递形参,实参的内容不变,如果想把实参传递过去,那么,在C#中只有通过ref关键字来实现。其实这里面的ref和c/c++中的地址引用差不多,具体原理没有深究,但是可以这么理解。
但是引用类型传递的时候是传递的内存的地址,也就是“传递实参”。所以有些时候就能够理解一些东西了。比如:DataSet传递时候,就是传递的“实参”。他也就是引用类型。
值类型不是很多,int float double char等。注意:string为引用类型。这个比较特殊。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |