谁能说一下C语言参数传值和传引用是啥概念,谢谢!:)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谁能说一下C语言参数传值和传引用是啥概念,谢谢!:)?相关的知识,希望对你有一定的参考价值。
你好,首先纠正一下你的一个错误,C语言里没有引用的概念。引用就是一个别名,定义一个变量a,再定义一个引用c,即 int &c = a;就是给a变了个别名,实际上是一个实体。传值就是将变量的值复制一遍,在函数调用栈上使用,还有一个传指针,即传变量地址,就是将变量的地址传到函数栈上去,这样,函数在栈上执行对该变量的操作都会直接操作到原变量的值。传引用和传指针都能直接改变原变量的值,而传值不能修改原变量,只能修改它们的复制品(即在栈上建立的变量并被赋予了传进来的变量的值); 参考技术A C语言只能“参数传值”,没有“引用传递”。C++有引用传递。传值就是传递值,引用传递就是传地址,可以形实参数可以同步变化。本回答被提问者和网友采纳 参考技术B 传值只是把这个变量的值赋给形参,改变形参的值,实参不变。传引用时改变形参,实参也会改变。
go语言---传值和传引用
go语言---传值和传引用
https://blog.csdn.net/cyk2396/article/details/78893828
1.定义:
b = a;
b.modify();
如果b的修改不会改变a的值,那么是传值;否则,是传引用
2.golang中大多数是传值的,有:
基本类型:byte,int,bool,string
复合类型:数组,数组切片,结构体,map,channnel
3.数组:
3.1 传值
func main() {
var array = [3]int{0, 1, 2}
var array2 = array
slice2[2] = 5
fmt.Println(array, array2)
}
输出结果:
[0 1 2] [0 1 5]
3.2.传引用的使用方法:
func main() {
var array = [3]int{0, 1, 2}
var array2 = &array
array2[2] = 5
fmt.Println(array, *array2)
}
输出结果:
[0 1 5] [0 1 5]
4.数组切片看这篇博文:
http://blog.csdn.net/cyk2396/article/details/78893420
5.struct结构体:
在函数中参数的传递可以是传值(对象的复制,需要开辟新的空间来存储该新对象)和传引用(指针的复制,和原来的指针指向同一个对象),建议使用指针,原因有两个:能够改变参数的值,避免大对象的复制操作节省内存。struct和数组的用法类似
6.map看这篇博文:
http://blog.csdn.net/cyk2396/article/details/78890185
7.channel:
channel和数组切片,map一样,传参的方式是传值,都可以直接使用,其内部维护着指向真正存储空间的指针。
以上是关于谁能说一下C语言参数传值和传引用是啥概念,谢谢!:)?的主要内容,如果未能解决你的问题,请参考以下文章