本文目录一览:
c语言值传递
在main函数中输出sizeof(a)结果是数组a的大小,所以结果为6;
而在函数MatchingBrackets中,你把数组a的地址传递给了形参b,此时的形参是一个指针变量,所以你用sizeof(b)测的是你所使用的环境中指针变量所占的内存空间大小,而不是测数组a的大小。因此结果为4
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的值是不会变化的,这要你去理解指针
在c语言编程中,传值方式和传引用方式之间有什么区别?
在C语言中,并没有引用的概念,这个是C++的概念。
在C++的函数参数中,有两种形式,其中
TYPE var的形式,称为传引用方式;
TYPE var的形式,称为传值。
二者的区别为,当传引用时,实际传到函数中的形参,是实际参数的一个引用,而不是仅传递值到函数中。具体的表现有以下几条:
1 传引用时,形参和实参是同一个变量,即使用相同的内存空间,二者有相同的地址。而传值时二者地址不同;
2 传引用时,由于没有新建变量,所以对于类对象参数,不会产生构造和析构。而如果是传值调用,调用时会进行构造,退出函数时会进行析构;
3 由于传引用使用的是原本实参的地址,所以对引用参数值的修改,会在退出函数后体现在主调函数中,而传值调用对参数的修改不会影响到主调函数。
c语言的传值与传指针的问题
c语言中指针即地址,地址的传值可以引起参数的变化。
比如:
x,
y是取这两个变量的地址,作用空间在main函数里。然后函数调用把这两个变量的地址传递到函数myadd中,在函数中的*a和*b分别是引用地址指向的变量值,等于是取到了x,y本身的值。在myadd中直接操作*a可以改变x的值。
通俗来说因为x,y表示的是x,y的地址。所以传递的是地址。意思就是说,函数可以通过地址引用变量。