
c语言中常出现 "值传递" "地址传递" "数组传递" 等概念 它们是什么意思 有什么异同点
c语言中常出现"值传递""地址传递""数组传递"等概念它们是什么意思有什么异同点能举例子最好...
c语言中常出现 "值传递" "地址传递" "数组传递" 等概念 它们是什么意思 有什么异同点能举例子 最好
展开
4个回答
2013-12-09
展开全部
1一般函数的形参和实参之间是值传递,传递的是数值,但不改变实参;2有指针参与的是 地址传递,就是赋予地址值,可以改变实参;3数组传递用于指针数组,和2的理解差不多;
2013-12-09
展开全部
值传递,把值传递给函数作为参数例如int a = 6;fun(a);//相当于fun(6) 地址传递,把地址传递给函数作为参数例如void swap(int *a,int *b); //用于交换两个变量值,需要地址,如果只传值,交换后原变量不会改变 数组传递是传递数组的如void show(int a[]);//把数组a作为参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-09
展开全部
值传递,传入变量的数值,函数不能改变变量的数值;地址传递,传入变量的地址,函数可以根据变量地址,访问变量,自然就能改变变量的值;数组传递,由于c语言数组和指针的处理方式一样,数组传递就等同于地址传递,函数可以根据地址,访问数组元素,自然就能改变数组元素的值。 #include "stdio.h"void fun1(int a)
{
a=1000;
}void fun2(int *p)
{
*p=1000;
}void fun3(int b[])
{
b[0]=1000;
b[1]=2000;
}void main()
{
int a=99;
int b[2]={1,2};
printf("a=%d\n",a);
fun1(a);/*值传递*/
printf("a=%d\n",a); fun2(&a);/*地址传递*/
printf("a=%d\n",a); printf("b[0]=%d b[1]=%d\n",b[0],b[1]);
fun3(b);/*数组传递*/
printf("b[0]=%d b[1]=%d\n",b[0],b[1]);}
{
a=1000;
}void fun2(int *p)
{
*p=1000;
}void fun3(int b[])
{
b[0]=1000;
b[1]=2000;
}void main()
{
int a=99;
int b[2]={1,2};
printf("a=%d\n",a);
fun1(a);/*值传递*/
printf("a=%d\n",a); fun2(&a);/*地址传递*/
printf("a=%d\n",a); printf("b[0]=%d b[1]=%d\n",b[0],b[1]);
fun3(b);/*数组传递*/
printf("b[0]=%d b[1]=%d\n",b[0],b[1]);}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-09
展开全部
值传递就是将变量中的值进行传递(把一个变量的值给另一个变量),而地址传递是将变量的地址(就像把门牌号告诉你,去找这间房间)进行传递。而数组传递有两种1.将数组中的元素的值传递。2.将数组的首地址传递(因为数组是连续的存储空间,知道首地址后其它元素都找到)#inlcude <stdio.h>int swap(int a,int b){}main(){ int a=3,b=4; swap(a,b);\\将实参传递给形参,这是值传递。 } #inlcude <stdio.h>int swap(int a,int b){}main(){ int a=3,b=4; swap(&a,&b);\\把地址传递给形参这是地址传递。 } 数组传递同上只是传递地址的时候只需要数组名。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询