C语言数组做函数参数

萌萌的蛆宝宝 发布于 2015/05/11 12:53
阅读 337
收藏 0
c中被调函数若想修改实参 实参需要取地址传给被调函数  ,而改变数组内的值的时候 ,不用这么做 ,为什么??请各路大神解答  
加载中
0
七木网络科技
七木网络科技
因为传数组的时候,实质上是传了数组的地址过去了。
0
默魑

假如有个函数int liu(int a[100])

调用:liu(a);

a为该数组的首地址也就是a[0]的地址。

共用同一存储空间。

我也是刚学C语言,希望能帮助到你。

0
L
Lv2

数组作为参数传递的时候是退化成指针的。

所以参数里面的数组是取不到长度的,如果不是字符数组,处理的时候一般还要穿一个长度。

自己用sizeof看一下参数和不是参数的尺寸应该就能看到了~

额~随便一说。

0
IT小伙
IT小伙
你可以声明一个数组int a[],然后输入a,看看输出什么,a表示数组首地址,所以取数组元素才可以*(a)
0
中山野鬼
中山野鬼
哈, c语言本就没有实参的概念。不知道楼主从何谈起。我就告诉你个事实,c语言里面任何函数参数,都属于函数自身的数据,在外部调用时,会形成复制的动作(实际优化后的汇编可能直接共用寄存器,不会存在数据的复制)。对于函数参数而言, int a[] 和 int *a 没有区别,都是定义该参数为一种指针类型的数据。 
中山野鬼
中山野鬼
@萌萌的蛆宝宝 哈,SORRY,书这事还真不是shit,一拉就出来。。。。
萌萌的蛆宝宝
萌萌的蛆宝宝
我的问题其实不是问这个 我不知道怎么组织语言 你说的我知道 你还是专心写书吧 我好多问题能在你写的书中找到答案 你一年前就说要出书 我裤子多脱了 现在书还没出版。。。。
0
乌龟壳
乌龟壳

引用来自“中山野鬼”的评论

哈, c语言本就没有实参的概念。不知道楼主从何谈起。我就告诉你个事实,c语言里面任何函数参数,都属于函数自身的数据,在外部调用时,会形成复制的动作(实际优化后的汇编可能直接共用寄存器,不会存在数据的复制)。对于函数参数而言, int a[] 和 int *a 没有区别,都是定义该参数为一种指针类型的数据。 
这种问题野鬼就没必要花时间解答了,赶紧的把书写好挂在首页就没人需要再问了。
0
中山野鬼
中山野鬼

引用来自“中山野鬼”的评论

哈, c语言本就没有实参的概念。不知道楼主从何谈起。我就告诉你个事实,c语言里面任何函数参数,都属于函数自身的数据,在外部调用时,会形成复制的动作(实际优化后的汇编可能直接共用寄存器,不会存在数据的复制)。对于函数参数而言, int a[] 和 int *a 没有区别,都是定义该参数为一种指针类型的数据。 

引用来自“乌龟壳”的评论

这种问题野鬼就没必要花时间解答了,赶紧的把书写好挂在首页就没人需要再问了。
别提了。。。最后一张了。。。写书真是个坑。。。。被坑苦了。。。
返回顶部
顶部