![本文作者:叶叶 本文作者:叶叶](http://dn-qiniu-avatar.qbox.me/avatar/b70a46f09148634901fa6e442fca8201.png?s=60&d=mm&r=G)
c语言函数形参是数组(c语言中函数的形参和实参)
本篇目录:
- 1、C语言中用数组做为形参为什么形参改变时实参也要变??
- 2、c语言怎么将数组作为函数参数传入?
- 3、C语言中,数组名作为函数参数,属于什么传递,为什么?
- 4、十万火急,关于函数中形参为数组的问题
- 5、在c语言中,数组名做实参,为什么形参必须是数组(前提是没有用指针)呢...
C语言中用数组做为形参为什么形参改变时实参也要变??
1、因为你传的是地址,假设有两个盒子分别存放两个实参1和2,设形参为A,B.如果只是传值调用,则相当于只是给A和B赋值1和2,对AB改变不影响盒子中的数。
2、在C里面 是无法做到形参改变 实参值同步改变的。只能通过传地址的方式 即参数类型为指针 这样 形参指向空间修改,可以使得实参指向空间同步修改,因为是同一块内存区域。
3、可以,实参传递数组名,其实就是地址传递,在函数中改变形参数组的值,其对应的实参肯定也改变了,在内存中只有一份内容,或者说共用内存。
4、简单说,该函数fun是将两输入参数进行互换的操作,但是整个互换操作是在单独的内存空间中完成的,最终函数并没有对输入参数的地址对应的数据进行更改,所以你可以认为是虚的跑了一遍计算,最终什么都没改变。
5、传递值的时候不影响实参 传递指针的时候能够影响实参。
c语言怎么将数组作为函数参数传入?
数组作为参数是按地址传递的 数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。
int类型是4个字节,所以,结果永远是2,因此,我们要向获取数组长度要怎么办呢?我可以在初始化数组的地方获取到数组的长度,作为参数传递过来:这样做我们可以获取到数组的长度。
name*)[size])\x0d\x0a \x0d\x0atype是你要定义的类型,fun是函数名,name是在函数中二维数组的名字,\x0d\x0asize是二维数组第2维的长度。\x0d\x0a这样调用这个函数只需要把二维数组函数名传递就可以了。
要将数组长度作为一个参数传给average函数,不能在average函数内部通过int arrLen = sizeof(a) / 4;来计算数组长度。
传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三种函数声明完全等同。实际情况是,数组做参数,完全无法按值传递。
因为数组在内存中是一块连续的内存,只要将该数组的首地址传进去,当然就可以访问整个数组了。值得注意的是,由于只传了首地址,函数不知道数组的维数,所以还得把数组的维数传进去,那就可以完全操作该数组了。
C语言中,数组名作为函数参数,属于什么传递,为什么?
1、属于地址传递,在函数里修改的话,将直接影响调用方的数值。这是因为数组名代表这个数组的首地址,不过是静态不可更改的而已。在函数里用引用[i]下标时,就是找到这个数组第i号元素的地址进行修改的。所以是第于是地址传递。
2、属于地址传递。因为数组名的本质是一个地址常量。字符串是字符数组,我们在scanf()中,输入字符串时,不需要用取地址符&,因为字符串变量名本身是地址。如:char name[20];scanf(%s,name);即可。
3、数组作为参数是按地址传递的 数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。
十万火急,关于函数中形参为数组的问题
1、之所以会发生错误,是因为你没有弄清楚参数传递的机制,即传值调用不改变原参数的值。
2、把你定义的数组名传给形参就行了,数组名就是指向该数组的指针。数组的操作实质上就是指针的操作。你用的是二重指针(int p;),p是二重指针,那么p[q]就是一重指针,*p[q]即可访问该指针(p[q])所指向的变量。
3、若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址。数组首地址数组第一个元素的地址。数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。
在c语言中,数组名做实参,为什么形参必须是数组(前提是没有用指针)呢...
1、因为数组传递的是数组的首地址,所以也是地址传递,所以形参改变时实参也要变。
2、正确答案是 指针。另外说明下,实参不管是数组元素地址,还是普通单个变量的地址,或者是结构体变量的地址,只要是地址,那么形参就要定义为指针,因为指针变量的值就是另外一个变量的地址。
3、C语言中,数组名作为函数参数,属于数组参数传递。在VB0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。
4、(3)实参数组和形参数组必须类型相同,形参数组可以不指明长度。
5、C选项:在被调用函数中,不需要考虑形参数组的大小。
到此,以上就是小编对于c语言中函数的形参和实参的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位老师在评论区讨论,给我留言。