值传递C语言,C语言参数值的传递

1,C语言参数值的传递顺序是从右向左楼主说的不太清楚啊 。。。不管怎么说,把形参 a[] 改成 *a 完全可以 。数组名本身就是指向数组第一个元素的指针,所以传数组名a就是传首地址C语言参数值的传递具有单向性,只能由实参传给形参而不能由形参传给实参,除非运用返回值 。传递方式有传值有传址两种 , 传值就是只把数值传入,这个数值的改变不会影响调用环境中的对应变量 。传址就是把变量的地址传入,这样在函数中就可以改变调用环境中的原始变量的值 。具体什么问题啊【值传递C语言,C语言参数值的传递】
2,c语言中函数中值的传递是什么意思 谢了1.值传递,返回函数值2.指针传递,返回数据地址3.引用传递简单来说函数就是c语言的模块,一块块的,有较强的独立性,但是可以相互调用 。这是c和c++区分的地方,c++面向对象,对象独立完成功能 , 无需调用 。一个c程序就可以是一个函数,里面再包含n个函数 。【延展】c语言中函数和函数体的区别是什么?第一、 简单来说函数就是c语言的模块 , 一块块的,有较强的独立性,但是可以相互调用 。一个c程序就可以是一个函数,里面再包含n个函数,有固定输入和输出格式的子程序 , 函数具有明确的功能、入口调用参数和返回值 。第二 、函数体是用花括号括起来的若干语句,他们完成了一个函数的具体功能 。函数体内的前面是定义和说明部分,后面是语句部分 。
3,值传递问题c语言 x1 是全局变量所以它的生命周期随着程序的开始而开始那么他的值回随着sub()的执行而改变:第一次sub(X3,X4)的时候,X1已经改变这个时候X1 =10;第二次sub(X2,X1)的时候 X1 =x 这个执行的是实质是X1 =x2的拷贝 ,而X2 =40;而x=y只是一个拷贝的赋值;y=x1也是一个样 只是一个拷贝的赋值,无实质意义,x2没有改变所以 结果为:1020 40 40sub函数只会改变x1的值,第一次改变不用去管,看第二个sub(x2,x1)就是把x2的值给了x1,所以x1=40,其它值不变这跟他们的生存周期有关,全局的是在整个程序执行完,生命结束,而局部的,该函数执行完后生命周期结束 。下次调用在重新生成因为 x1 是全局变量如果你把x1 弄成了局部变量就是30了
4 , 关于C语言函数值传递切这个例子是为了让你理解函数传递到底是什么 。(c当中的函数参数传递一直是值传递,别被指针迷惑了)指针也只是一个变量而已 。因为你传的是该指针,用的也是该指针 。函数传递参数是值传递 。也就是拷贝了一份pt的值进去 。并未对pt本身做任何的操作 。所以pt还是那个pt 。你需要改变的是指针指向的值, 而不是指针.你这样用相当于传递了实参.void fun(int *a,int *b)c=*a;*a=*b;*b=c;}因为point函数的返回值这还是值传递 , 只不过传递的值是指针变量,值传递是不能改变传递的值的,所以它的指向没变,要想实现改变 , 必须传递的是指针的地址值&pt传递的参数本身进去是什么,出来还是什么的 , 传进去的是一个复制的值 。可以理解为这个值给函数内部用,但是这个值最后不变 。如果你用p+=3之后的p,去更改a[]中的内容 , 那么a[]中的内容就能够确实变化,因为a[]是在外面的数据 , 但是出来后指针本身并不会变化 。如果指针想要变化,传递的应该是这个指针的地址 。5,c语言中的值传递是怎么回事实参的值传给了形参 , 形参可以看着是被调函数中的局部变量被调函数可有返回值也可以没有有返回值用return返回 。例如int fun(int a,int b){ int c; c=a+b; return c;}主函数调用:int a,b,c;a=1,b=2;c=fun(a,b);没有返回值的函数通常形参都是指针变量,那样可以直接改变变量的值 , 例如fun(int *a){ *a=5;}主函数调用int b=1;fun(&b);这里调用fun后 , b的值就变为5了而如果你的函数是fun(int a)这样b的值是不会变化的 , 这要你去理解指针不是滴,函数参数值是从右到左的,我举一个例子给你看看!#include<stdio.h>int main() void fun(int i,int n); int i=0; fun(i++,i++); return 0;}void fun(int i,int n)printf("%d\t%d\n",i,n);}1、C语言中函数参数的传递有两种方式:传值与传地址 。传值就是将实参的值传递给形参,使得形参的值与实参一样 。传地址就是将实参所在内存单元的地址传递给形参,使得形参指向实参所在的内存地址 。2、举例说明如下:#include<stdio.h>int fun1(int a, int b); return a>b ? a : b;}int fun2(int *a, int *b); return *a>*b ? *a : *b;}void main() int x=5, y=3; int z1 = fun1(x, y); // 传值调用方式 int z2 = fun2(&x, &y); // 传地址调用方式}是把x的值传给a,x+=2的值传给b吗?是的那被调函数执行完后的值返回给主函数吗?看你怎么返回,比如return就是返回给主函数还是有return就有返回值,没有就不返回吗?可以这么认为,其实不是如果不返回给主函数,那设置被调函数有什么意义?这就类似pascal里面的过程,没有返回,但执行了操作,好比你寄的平信 , 虽然不知道对方有没有收到,但至少让邮局忙乎了一阵 。有些函数重在处理一些数据等,而不在乎返回,比如srand 函数没有返回 , 但它设置了随机种子1、C语言中函数参数的传递有两种方式:传值与传地址 。传值就是将实参的值传递给形参,使得形参的值与实参一样 。传地址就是将实参所在内存单元的地址传递给形参,使得形参指向实参所在的内存地址 。2、举例说明如下:#include<stdio.h>int fun1(int a, int b); return a>b ? a : b;}int fun2(int *a, int *b); return *a>*b ? *a : *b;}void main() int x=5, y=3; int z1 = fun1(x, y); // 传值调用方式 int z2 = fun2(&x, &y); // 传地址调用方式}

    推荐阅读