首页 > 编程知识 正文

c语言函数传递方式,c语言参数传递过程

时间:2023-05-04 17:33:08 阅读:149328 作者:2816

1 .传价和传址

)1)值传递:对于“值(例如,数字10 )”,传递参数是将参数的值复制到临时存储装置中。 在调用的函数结束时释放。 在调用过程中更改参数的值不会影响参数本身。 也就是说,参数保持调用前的值

)2)传递地址:在“地址(例如0019FEDC )”中传递参数,将实际参数变量的地址传递给调用函数。 形状参数和实际参数共享存储器的相同地址。 在被调用的过程中,如果形参的值发生变化,则对应的实参的值也会发生变化

注:传价将在函数调用过程中为形参重新开拓空间。 形参和实参各自占用不同的地址空间。 地址传递,形参和实参共享同一个存储器地址

提心吊胆:

传递值(传递普通类型变量的参数) )

voidfun1(inta ) {

a=2;

printf('fun1函数中,变量a的值的地址为:%pn ',a );

a=a 1;

}

void main () }

int n=1;

printf('main函数中,变量n的地址为:%pn ',n );

fun1(n;

printf (在对fun 1函数中的形参a加1后,实参n的值为%d(n ),n ); //n的值是怡园奥特曼不变还是1

}

执行结果

地址传递(以指针为参数) )。

voidfun2(int*q ) {

printf(fun2函数中q的值)为m个地址,与p的值相同) :%p(n ),q;

*q=*q 5;

}

void main () }

int m=10

int *p=m;

printf (在主函数中,为m值的地址:%p(n ),m );

printf (在主函数中,p指针的值(p指定的变量的地址) :%pn )、p );

printf('main函数中,p指针的地址(指针变量本身也占存储单元) :%pn ',p );

fun2(p; //传递的是p的值,该值是m的地址

printf (执行' fun 2函数后,m的值(因为形参和实参的共享存储器的相同地址,所以形参改变后实参也改变) :%dn ',m );

}

注:“*”有两个作用。 作用一(指针变量的定义(int *p; 作用2 (取值(int m=10; int p=m; printf(*p )//输出10

执行结果

数组名称的参数传递

“数组名称值”和数组地址存储数组的起始地址

voidfun3(intarr[] ) {

for(intI=0; i5; I ) {

printf('%d ',arr[i] );

}

}

voidfun4(int*arr ) {

for(intI=0; i5; I ) {

printf('%d ',arr[i] );

}

}

void main () }

intarr [5]={ 1,3,5,7,9 };

int*r;

r=arr;

fun3(arr ); //传递数组名称

打印((n );

fun4(r; //传递指针

打印((n );

printf (数组名称值:%p(n ),arr );

printf ('数组的地址值:%pn ',arr );

}

执行结果

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。