函数调用是传值调用 引用调用还是传引用

Python中函数调用是传值还是传引用? - 简书
Python中函数调用是传值还是传引用?
Python在调用函数的时候,究竟是传值还是传引用呢?
这个问题的答案无外乎这几种说法:传值,传引用,对于可变对象是传引用,不可变对象是传值。
先看下面这个例子:
&&& def foo(n):
print id(n)
print id(n)
&&& foo(n)
由foo中两次输出不相等可以看出,传引用说法并不成立。
来看下面的例子:
&&& def foo(n):
n.append(3)
&&& n = [1, 2, 4, 8]
&&& foo(n)
[1, 2, 4, 8]
[1, 2, 4, 8, 3]
[1, 2, 4, 8, 3]
按传值的说法,一个值传进来,在函数内改动并不会影响变量本身的值,上面例子中n变量本身的值也被改变了,说明传值的说法也不对。
3.可变对象传引用,不可变对象传值
相比上面两种说法,这种说法似乎更靠谱,传播也更为广泛,那它到底对不对呢?
&&& def foo(n):
print id(n)
n = ['1', '2', '3']
print id(n)
&&& n = [1,2,3,4,5,6]
&&& foo(n)
['1', '2', '3']
[1, 2, 3, 4, 5, 6]
按照可变对象传引用的说法,上面list类型是可变对象,应该传引用,这foo方法中两次调用id应该输出一样的值,更改的结果也应该影响到外部变量,但结果显然不是这样的,这说明,这种说法也是不正确的。
那么Python传值的方法到底是什么样呢?其实Python中的函数参数所遵循的是传对象(call by object),或者叫做穿对象的引用(call by object reference)。在调用函数时,将变量整个对象传入,对于可变对象的修改,在函数内外均可见;而对于不可变对象,因为其并不能真正意义上被赋值,修改是通过生成新的对象来实现的。
下面来一个有趣的例子作为结尾:
&&& def bar(a = []):
print id(a)
a.append(7)
&&& for _ in range(5):
#结果输出请自己动手实践,原因应该不难理解
1.对缺省参数的理解。给出代码 缺省参数在python中是与函数绑定在一起的。也就是说,一个函数中定义了一个缺省参数,那么这个参数会随着被调用而改变。 解释说明: 许多人会错误的认为 list1 应该等于 [10] 以及 list3 应该等于 ['a']。认为 list 的...
1.1==,is的使用 ·is是比较两个引用是否指向了同一个对象(引用比较)。 ·==是比较两个对象是否相等。 1.2深拷贝、浅拷贝 1.2.1浅拷贝 浅拷贝是对于一个对象的顶层拷贝 拷贝了引用,并没有拷贝内容 1.2.2深拷贝 深拷贝是对于一个对象所有层次的拷贝(递归) ...
http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、...
前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程语言 用于现代多平台应用 100%可与Java(TM)和Android(TM)互操作,它是[JetBrains]开发的基于JVM的语言开发IDE : Intellij / ...
第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句。 语句(statement)是为了完成某种任务而进行的操作,比如下面就是一行赋值语句: 这条语句先用var命令,声...
故事里走过匆匆时光,那些散去的记忆,仍旧遗留在心中,成为一道最亮的风景。空徘徊,断惆怅,那时的那时,让记忆定格在属于我们的时光里。 翻看着从高中之后的记忆,一丝丝的感慨充斥着内心最深处的感情。多少次抱怨着数不清的作业,多少次“怨恨”着我们视为“敌人”的老师,多少次吐槽着想要...
因生活习惯,我对“青梅”了解不多,去年的夏末,朋友送给了我一瓶从化的青梅酒,还特意提醒,要冰镇后再喝。 我向来对酒是比较排斥的,啤酒胃胀,葡萄酒易醉,补酒太呛,实不相瞒,只有口感好如饮料,才能征服我高要求的嘴巴啊~而当我喝下一口冰冻的青梅酒后,已深深地爱上了。 后来,才知道...
想要你的产品在微信上火吗?想要在微信上把品牌打出去吗?想要吗?就来《你的课》。《你的课》教你玩转微信哦!!!
准备纸笔水彩,打开手机播放音乐,循环播。拿起笔准备常试画葡萄,前一次画多肉植物突发奇想画葡萄,来了兴致,今天就试吧! 用笔起稿以,就先上色啦,我先由浅到深逐步画,但是每一次调的色画上去都不是很满意,要么太深要么太浅,色彩过渡不到一起,怎么看怎么别扭。 上原图,以备以后改进不...
云层 这个冬天,也许是我即将度过的最后一个寒冷冬天,不是也许 是确实,对,是确实! 往年的我,久居中原腹地,自然无法感知冬天的寒冷凄切;今年的我,移居塞北高原,寒冷自然侵人心骨。即使被厚厚的衣物裹住,心里也暖和不起来,其实,不是天气,而是心情,是心情。这个冬天发生了太多故事...深入理解python中函数传递参数是值传递还是引用传递-阿里云资讯网
深入理解python中函数传递参数是值传递还是引用传递
发布时间:
更新时间:
来源:网络
上传者:用户
目前网络上大部分博客的结论都是这样的:
Python不允许程序员选择采用传值还是传 引用。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能 直接修改原始对象——相当于通过“传值”来传递对象。
你可以在很多讨论该问题的博客里找到以上这一段话。
但是在实际操作中我却发现一个问题:
l=[1,2,3] def a(x): x=x+[4] a(l) print(l)
这段代码的输出为:
为什么是这样呢,list是可变对象,按照上面的结论来说传递方式是引用传递,我应该在函数里能对它进行修改呀?难道不应该输出[1,2,3,4]吗?
我觉得我上面引用的那段大多数博主的结论,其实非常不好理解,而且没有讲到本质,看的云里雾里的。
经过我后面的多次试验,得到以下结论:
其实在python中讨论值传递还是引用传递是没有意义的,要真正对这些情况作出解释,其实是应该搞明白python(对可变对象和不可变对象的)赋值过程中是如何分配内存地址的。
接下来,我们不讨论值传递和引用传递的问题。
让我们做一个非常简单的小实验,其中,id()可以查看变量在内存中的地址:
l1=[1,2,3] l2=[1,2,3] a=1 b=1 print(id(l1)) print(id(l2)) print(id(a)) print(id(b))
在我的电脑中的运行结果:
可以发现,对于可变对象list来说,即便列表内容一模一样,python也会给它们分配新的不同的地址。
然而,对于不可变对象int来说,内存里只有一个1。即便再定义一个变量c=1,也是指向内存中同一个1。换句话说,不可变对象1的地址是共享的。
接下来让我们看看在函数中调用可变对象和不可变对象,并修改他们的值,会是一个什么情况。
对于不可变对象int,我们来看看最简单的情况:
a=1 print(id(a)) def x(a): print(id(a)) b=a print(id(b)) x(a)
运行得到:
这看起来就是一个引用传递,函数外的a、函数里的a和b都指向了同一个地址。
但我们再来看一个极端情况:
a=1 print(id(a)) def x(): b=1 print(id(b)) x()
运行得到:
很神奇不是吗?函数外定义的a和函数内定义的b没有任何关系,但它们指向同一个地址!
所以你说如何判断它是值传递还是引用传递?讨论这个问题根本没有意义,因为内存里只有一个1。当我把值1传递给函数里的某一个变量的时候,我实际上也传递了地址,因为内存里只有一个1。
甚至于说我直接给函数里的b赋值1都可以让函数外的a和函数内的b指向同一个地址。
下面来看看传递可变对象list的情况:
l=[1,2,3] print(id(l)) def a(x): print(id(x)) x.pop() print(x) print(id(x)) x=x+[3] print(x) print(id(x)) a(l)
[1, 2] [1, 2, 3]
可以看到,当我们把函数外的列表L传递给函数后,x的地址和L是一样的,这看起来就是一个引用传递,没问题。
继续往下,我们调用x本身的方法pop后,x变成[1,2],并且x的地址没变,这也没什么问题。
但是当我们给x赋值以后,x的地址就变了。
也就是说,只要创建一个新的可变对象,python就会分配一个新的地址。就算我们创建的新可变对象和已存在的旧可变对象完全一样,python依旧会分配一个新的地址(见本文上半部分那个‘非常简单的小实验')
而pop并不是创建新的可变对象,pop是对已有的可变对象进行修改。
所以可以总结为:
在python中,不可变对象是共享的,创建可变对象永远是分配新地址
这个时候我们再回过头来思考值传递和引用传递的问题,就会发现在python里讨论这个确实是没有意义。
我们可以说:python有着自己的一套特殊的传参方式,这是由python动态语言的性质所决定的
本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:zixun-group@service.aliyun.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。
介绍 PDF生成所需类库itextsharp.dll,是一个开源的在C#中用来生成PDF文档的库文件,不少C#爱好者用它制作出了PDF文档生成器 代码 &代码如下 void ConvertJPG2PDF(string jpgfile, string pdf) { &var document = new Document(iTextSharp.text.PageSize.A...
本文实例为大家分享了python使用tkinter实现简单计算器的具体代码,供大家参考,具体内容如下 class Counter: #引入tkinter import tkinter as tk #引入消息弹窗模块 import tkinter.messagebox as mbox #初始化Counter def __init__(self): #生成一个窗口对象 self.window ...
随机函数random
一、random模块简介 Python标准库中的random函数,可以生成随机浮点数、整数、字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据等。 二、random模块重要函数 1 )、random() 返回0&=n&1之间的随机实数n; 2 )、choice(seq) 从序列seq中返回随机的元素; import random a = random....
闭包(closure)不是什么可怕的东西。如果用对了地方,它们其实可以很强大。闭包就是由其他函数动态生成并返回的函数,通俗地讲,在一个函数的内部,还有一个“内层”的函数,这个“内层”的函数是被返回的,它可以访问其创建者的局部命名空间中的变量。 下面是一个非常简单的例子: # 定义一个函数 def make_closure(a): # 在函数内部再定义一个函数,其实这个里面的函数就被认为...
小编给大家推荐的这篇文章介绍了Python 实现元胞自动机中的生命游戏(Game of life)的实例代码,有兴趣的朋友快来看看吧。 细胞自动机(又称元胞自动机),名字虽然很深奥,但是它的行为却是非常美妙的。所有这些怎样实现的呢?我们可以把计算机中的宇宙想象成是一堆方格子构成的封闭空间,尺寸为N的空间就有NN个格子。而每一个格子都可以看成是一个生命体,每个生命都有生和死两种状态,如果该...
本文实例讲述了Python编程实现的简单神经网络算法。分享给大家供大家参考,具体如下: python实现二层神经网络 包括输入层和输出层 # -*- coding:utf-8 -*- #! python2 import numpy as np #sigmoid function def nonlin(x, deriv = False): if(deriv == True): ret...
若您要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在5个工作日内回复。
售前咨询热线
服务与支持
账号与支持
关注阿里云
International()为啥当函数调用时,引用和指针可以改变实参的值,而默认的传值不能改变实参的值?-CSDN论坛
()为啥当函数调用时,引用和指针可以改变实参的值,而默认的传值不能改变实参的值?
(面试题)为啥当函数调用时,引用和指针可以改变实参的值,而默认的传值不能改变实参的值?
&&&&&void&swap1(int&v1,&int&v2){
&&&&&&&&int&temp=v2;
&&&&&&&&v2=v1;
&&&&&&&&v1=
&&&&void&swap2(int&&v1,&int&&&v2){
&&&&&&&&int&temp=v2;
&&&&&&&&v2=v1;
&&&&&&&&v1=
///////////////////////////////////////////////////////
&&&&#include&&iostream&
&&&&void&swap1(int,int);
&&&&void&swap2(int&&v1,&int&&&v2);
&&&&int&main(){
&&&&&&&int&i=10;
&&&&&&&int&j=20;
&&&&&&&cout&&&&"before&swap():\t&i:"&&i&&"\t&j:&"&&j&&
&&&&&&&swap1(i,j);
&&&&&&&cout&&&&"after&swap1():\t&i:"&&i&&"\t&j:&"&&j&&
&&&&&&&//&i=10,j=20;
&&&&&&&swap2(i,j);
&&&&&&&cout&&&&"after&swap2():\t&i:"&&i&&"\t&j:&"&&j&&
&&&&&&&//&i=20,j=10;
为啥swap1(i,j)默认的传值不能改变实参的值,而&swap2(i,j)引用
(或指针)改变实参的值?我知道前者函数传递的是一个copy值,而
引用(或指针),形参和实参指的是同一块内存。但从函数调用时的
堆栈解释具体为啥?谢谢!
你还是&要看看C++基础才行哟
为啥?不为啥,本来就是这样的呀。
不过你说的不确切,使用指针也并没有改变实参的的值,而是改变了实参指向的值。
楼主帮你顶!
函数的参数传递实际上就是copy值。
如果参数是指针,那么就是做个新的指针出来,copy上实参的那个指针的值。
只是因为指针的值实际上表示的是一个地址,所以这个临时指针指向的和传进来的那个指针指向的是同一个地方(因为它们的值一样)
这样操作新的指针,就改变了实际的值。
严格来说C根本改不了任何实参值,它只能修改实参对应的空间的值
int*&c=(int&*)b;
这样也可以把b理解成地址以后指向的空间改掉(虽然这样很容易出问题,一般不允许这样干.^_^)
请问有关这的函数调用机制在那本书的那部分有详细介绍?
如果不能改变的话,必须用const&Type&*&或者&const&Type&&
另外一种等价写法是:Type&const&*&和&Type&const&&
但是实际上透过强制转换,还是可以的:
int&fun(int&const&*p)
&&&&*(const_cast&int*&(p))&=&3;
//这是C++标准允许的行为,但不提倡,你面试的题目,似乎应该是把这个排除在外了
//而且严格的说,正如&iamltd(妖)&说得那样,C++是不可能改变实参的
//因为即使指针参数,改变的是指针指向的内容,而非指针本身
//所以改变实参,只能是逻辑意义上的,这也许是你面试的侧重点
面试者让我从函数调用机制使用堆栈角度出发具体解释为啥?谢谢!
传值时,临时变量在堆栈中分配,这时对他操作后,返回时就销毁了!所以不会影响到实参!
传指针,由于是将变量的指针传入,虽然行参的指针最终销毁,但对他所指的变量的修改会影响到指针所指的变量!
指针和引用主要就是改变了变量的值,而并不是变量
在调用函数时,主调函数有两种方式向被调函数传递实参。一是传值调用,传递的其实是实参的一份副本(Copy),因此你改变的也仅仅副本而已;二是传址调用,传递的是实参的地址,你在被调函数里是按该地址操作实参的,当然改变了实参的值。
就C语言而言
函数调用时的堆栈里面只有传值调用,返回时销毁.不会修改到实参的
其他语言堆栈要分传值和传地址,返回时有可能修改到实参
函数调用时,需要在栈内存中申请参数空间,并把参数复制到该空间,称为传值,在函数内,对该参数的操作,实际上是对栈空间中复制的空间的操作,并不影响传入的参数。函数结束后,分配的空间出栈销毁。
如果是引用类型的参数,则所有对该参数的操作,就是在原参数的真实地址上操作,会影响原参数的值。
TO:&changeme(我本楚狂人),dongyuanzhang(阿林)&,beepbug(放屁虫)
请问有关这的函数调用机制在那本书的那部分有详细介绍?
回复正文 php函数的传值与传址(引用)详解
php函数的传值与传址(引用)详解
发布时间: & 编辑:www.jquerycn.cn
jquery中文网为您提供php函数的传值与传址(引用)详解等资源,欢迎您收藏本站,我们将为您提供最新的php函数的传值与传址(引用)详解资源
php中引用的用法:
1. 变量的引用赋值: $a = &$b
2. 函数调用时的引用参数传递
&&& 1) 早期php是在调用时通过&符号传递引用类型的变量, 比如: func(&$arg);
&&& 2) 后来, 函数的引用类型参数被规定为需要在函数声明时定义, 不如: function func(&$arg);
&&&&&& 注: 引用声明时定义引用类型参数后, 运行时引用参数传递被废弃, 需要在php.ini中增加allow_call_time_pass_reference来开启.
3. 函数返回引用类型, 这种应用方式需要声明函数时, 在函数名前增加&符号, 并且, 在调用时, 要用引用赋值方式, 比如:
&table width="620" align="center" border="0" cellpadding="1" cellspacing="1"
style="background:#FB7"&
&td width="464" height="27" bgcolor="#FFE7CE"&&代码如下&/td&
&td width="109" align="center" bgcolor="#FFE7CE" style="cursor:" onclick="doCopy('copy8817')"&复制代码&/td&
&td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10" class="copyclass" id=copy8817&
function &func() {
&&& return $a;
$a = func();& //这种调用方式得到的不是引用传值
$a =& func(); //这样调用才是引用传值
简而言之, 就是让函数的返回一个引用类型的值, 一个更实际的例子:
&table width="620" align="center" border="0" cellpadding="1" cellspacing="1"
style="background:#FB7"&
&td width="464" height="27" bgcolor="#FFE7CE"&&代码如下&/td&
&td width="109" align="center" bgcolor="#FFE7CE" style="cursor:" onclick="doCopy('copy9380')"&复制代码&/td&
&td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10" class="copyclass" id=copy9380&
function &func(&$a) {
& return $a;
$b = func($a);
$c =& func($a);
echo &a: $a, b: $b, c: $c. &br /&/n&;
//输出a: 1, b: 2, c: 1.
//可见对$b的修改不会影响$a
echo &a: $a, b: $b, c: $c. &br /&/n&;
//输出a: 3, b: 2, c: 3.
//可见对$c的修改会影响$a
php函数传值的几个细节
&table width="620" align="center" border="0" cellpadding="1" cellspacing="1"
style="background:#FB7"&
&td width="464" height="27" bgcolor="#FFE7CE"&&代码如下&/td&
&td width="109" align="center" bgcolor="#FFE7CE" style="cursor:" onclick="doCopy('copy6659')"&复制代码&/td&
&td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10" class="copyclass" id=copy6659&//一、基本数据类型的传值 &
/* **************************************************** */&
function testvar($k){
//给一个函数参数传一个基本数据类型(整型,布尔,字符 ...), 实际上传的就是值 ;
testvar($c);
echo $c;//结果是:30
function testvar2(&$k){
//给一个函数参数传一个基本数据类型(整型,布尔,字符 ...), 实际上传的y就是地址 ;
testvar2($e);
echo $e;//结果是:40
/* **************************************************** */
//二、数组(默认情况下是复制一份数据),如要传地址则&$arr.
$arr1 = array(-1,5,0);
function testArr($arr){
&for($i=0;$i&count ($arr);$i
&&for($j=$i 1;$j&count($arr);$j
&&&if($arr[$i]&$arr[$j]){
&&&&$temp = $arr[$i];
&&&&$arr[$i] = $arr[$j];
&&&&$arr[$j] = $
&print_r($arr);& //结果:Array ( [0] =& -1 [1] =& 0 [2] =& 5 )
testArr($arr1);
print_r($arr1);& //结果:Array ( [0] =& -1 [1] =& 5 [2] =& 0 )
function testArr2(&$arr){
&for($i=0;$i&/count&&count ($arr);$i
&&for($j=$i 1;$j&count($arr);$j
&&&if($arr[$i]&$arr[$j]){
&&&&$temp = $arr[$i];
&&&&$arr[$i] = $arr[$j];
&&&&$arr[$j] = $
testArr($arr1);
print_r($arr1);& //结果:Array ( [0] =& -1 [1] =& 0 [2] =& 5 )
/* **************************************************** */
//三、对象数据类型传值
class person{
&public& $
$a = new person();
$a-&name = '小明';
$a-&age = '20';
//变量a在存的是对象的地址,把a赋给b这个变量,实际上就是赋了一个地址。
$b-&age = 30;
//echo $a-&age.$b-&//结果是:30 30
//给一个函数参数传一个对象, 实际上传的是这个对象的地址;
function test($k){
&$k-&age =40;
//echo $a-&age.$b-&//结果是:40 40
php函数的传值与传址有什么区别呢?对于这样的问题我喜欢通过程序演示来获取答案。让我们来看一个演示记录吧!
&table width="620" align="center" border="0" cellpadding="1" cellspacing="1"
style="background:#FB7"&
&td width="464" height="27" bgcolor="#FFE7CE"&&代码如下&/td&
&td width="109" align="center" bgcolor="#FFE7CE" style="cursor:" onclick="doCopy('copy8062')"&复制代码&/td&
&td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10" class="copyclass" id=copy8062&&?php&&&
$i=100;&&&
function func($n){&&&
&& $n=$n 100;&&&
&&&&&&&&&&
&& return $n;&&&
&&&&&&&&&&
echo '1)函数传值前变量$i的值:'.$i.'&br&';&&&
echo '2)传值后函数的返回值:'.func($i).'&br&';&&&
echo '3)函数传值后变量$i的值:'.$i.'&br&';&&&
echo '4)函数传址前变量$i的值:'.$i.'&br&';&&&
echo '5)传址后函数的返回值:'.func(&$i).'&br&';&&&
echo '6)函数传址后变量$i的值:'.$i.'&br&';&&&
//echo func($i).'&br&';&&&
程序输出:
1)函数传值前变量$i的值:100
2)传值后函数的返回值:200
3)函数传值后变量$i的值:100
4)函数传址前变量$i的值:100
5)传址后函数的返回值:200
6)函数传址后变量$i的值:200
1)直接输出一个赋值$i=100的变量
2)func函数传值返回一个算术相加的结果$=100 100
3)func函数传值,其作用区域只限于函数内部,对外面的变量$i不会有影响
5)func函数参数前多了个&&&符,表示传址,和2)一样,返回值是函数的算术运行结果。
6)func(&$i),变量指针指向$i的位置,可以理解为是对变量$i的操作,$i=$i 100;这时变量$i已经相当于重新被赋值
如果去掉上面代码的第18行注释,会得什么结果呢?
小结:传址为了在执行函数的同时,同时改变函数参数值,而传值不期望改变。&/td&
&/table&您可能感兴趣的文章:2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2018年1月 .NET技术大版内专家分月排行榜第一2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
匿名用户不能发表回复!|

我要回帖

更多关于 c语言传值调用 的文章

 

随机推荐