指针是个强大无比的东西。用指针作为函数的形参,只是把变量的地址传过去,函数内部的操作作用在这个指针所指向的内存空间中的内容。
创新互联建站主要从事成都网站设计、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务江都,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
在调用该函数时,有max(a,b);则该调用只把a(实参)的值赋给x(形参),把b的值赋给y。函数中对x,y的任何动作不改变a,b的值。但如果用指针作参数,对形参指向的数据的更改会影响实参指向数据的值。
把参数传递给函数的第二种方法是“引用调用”(call by reference)。这种方法是把参数的地址复制给形式参数,在函数中,这个地址用来访问调用中所使用的实际参数。
在C里面 是无法做到形参改变 实参值同步改变的。只能通过传地址的方式 即参数类型为指针 这样 形参指向空间修改,可以使得实参指向空间同步修改,因为是同一块内存区域。另外,在C++中,可以通过引用传参,来实现你说的目的。
void fun(a[]){ a[0]=3;a[1]=4;} int main(){ int a[2]={1,2};fun(a);printf(%d %d,a[0],a[1]);} 结果为3 4。
也就是说,在函数的形参列表里指定数组的成员个数是没有意义的,所以,你传入的实参究竟是比10多还是比10少对于调用函数而言都是合法的。
数组名是参数,说明直接调用的指针,当修改了数组的数据时,那么就相当于实际修改了数组中得数据,相应的值就会发生变化。
因为数组传递的是数组的首地址,所以也是地址传递,所以形参改变时实参也要变。
形参和实参如果都是地址(即指针)时,会发生改变形参即可改变实参的情况,因为这时形参和实参实际上是对应同一段内存的数据。
主要是通过指针把数组,例如main里面的a的地址传入arry函数,然后在arry函数中用一个兼容类型的指针接收地址,然后就可以再这个指针下的地址操作地址上面的数据了。arry返回的时候也是返回一个指针(地址)。
可以,实参传递数组名,其实就是地址传递,在函数中改变形参数组的值,其对应的实参肯定也改变了,在内存中只有一份内容,或者说共用内存。
设形参为A,B.如果只是传值调用,则相当于只是给A和B赋值1和2,对AB改变不影响盒子中的数。传地址则相当于把两个盒子存放的地址传给了A,B,对A和B进行改变就是直接对盒子里的数改变,即实参发生改变。
传递值的时候不影响实参 传递指针的时候能够影响实参。
还有一种是传址,VB默认是传址。传址如果函数里改变了参数的值,那调用函数的地方实参也会跟着改变,传值函数改变其形参值实参不改变。综合来看只有b是传址,所以b在函数体内执行了b=2+1=3,所以输出了这个结果。
对,c语言函数调用过程中的参数传递过程是值传递过程,形参在函数执行完毕后即被销毁,实参的值不会被改变。