C语言中的参数传递方式都有哪些

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中的参数传递方式都有哪些相关的知识,希望对你有一定的参考价值。

是函数参数的传递方式吧。c语言的话是:值传递和指针(地址)传递。c++的话除了c语言的两种方式外还有引用传递。 参考技术A 两种
传地址和传值。
传地址也叫传指针调用。
参考技术B 只有值传递,地址传递。 引用传递是C++的 参考技术C 有两种,一种按值传递,一种按引用传递

python中的参数传递

在c系列语言中,参数的传递方式有值传递与引用传递,而python的参数传递方式是赋值传递,或者称为对象的引用传递。python里的所有数据类型都是对象,所有参数传递时,只是让新变量与原变量指向相同的对象而已,并不存在值传递与引用传递的说法。

1.python变量及其赋值

  如下代码示例:

1 a = 10
2 b = a
3 a = 20

 

在这一过程中,python会先执行右边的表达式,即先在内存中创建一个数值,然后再执行左边,创建一个标签,这个标签相当于一个便利贴,最后再将标签指向内存。第一行所做的事情如下图:

技术图片

第二行代码开始进行如下处理:

技术图片

第三行代码处理如下:

技术图片

2.python的参数传递

   如下示例:

1 def func(d):
2     d[a] = 10
3     d[b] = 20
4     d = a:1, b:2
5     print(d)  #输出‘a‘:1, ‘b‘:2
6 
7 d = 
8 func(d)
9 print(d)  #输出‘a‘: 10, ‘b‘: 20

在上面的代码中,当我们将d传给func时,func里面的d与外面的d指向的是同一片内存。相当于一开始d=,存放这份空间只有d这一个便利贴,但是func(d)的时候,这份空间又多了一个便利贴。尽管都叫d,但一个是全局变量d,一个是函数的参数d。

当d[‘a‘] = 10和d[‘b‘]=20的时候,由于字典是可变类型,所以外面的d也被修改了,此时外面的d和函数里面的d都指向了‘a‘: 10, ‘b‘: 20, 但是当d = ‘a‘: 1, ‘b‘: 2的时候,这是属于赋值。因此python会在内存中再开辟一份空间,空间存放‘a‘: 1, ‘b‘: 2,然后让函数里面的局部变量d指向它,相当于将原本位于‘a‘:10,‘b‘:20上的便利贴撕下来,贴在了另一块空间。但这只是函数里面的d,对外面的d是没有影响的,所以外面的d依旧是‘a‘: 10, ‘b‘: 20。

 

参考:1.https://www.cnblogs.com/scolia/p/5523883.html

   2.极客时间《python核心技术与实战》

以上是关于C语言中的参数传递方式都有哪些的主要内容,如果未能解决你的问题,请参考以下文章

什么是形参和实参?参数传递的方式都有哪些?

vb过程的参数传递方式都有哪些?

简答题,c语言中函数传递参数的方式有哪2种,含义是啥

在C语言中参数是如何传递的?

jemetercookie参数少无法传递

c# 参数传递方式?